<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="zh-Hans" xml:lang="zh-Hans"><head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta charset="utf-8">
<meta name="generator" content="quarto-1.4.551">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
<meta name="description" content="介绍使用相关工具对 LI-6800 和 LI-6400 光合数据进行分析的一些方法，主要以 R 为主， 有时候为方便或者作为比较，会涉及 python 和其他工具。">
<title>LI-6800 和 LI-6400 光合数据分析指南 - 5&nbsp; 数据读取的选项</title>
<style>
code{white-space: pre-wrap;}
span.smallcaps{font-variant: small-caps;}
div.columns{display: flex; gap: min(4vw, 1.5em);}
div.column{flex: auto; overflow-x: auto;}
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
ul.task-list{list-style: none;}
ul.task-list li input[type="checkbox"] {
  width: 0.8em;
  margin: 0 0.8em 0.2em -1em; /* quarto-specific, see https://github.com/quarto-dev/quarto-cli/issues/4556 */ 
  vertical-align: middle;
}
/* CSS for syntax highlighting */
pre > code.sourceCode { white-space: pre; position: relative; }
pre > code.sourceCode > span { line-height: 1.25; }
pre > code.sourceCode > span:empty { height: 1.2em; }
.sourceCode { overflow: visible; }
code.sourceCode > span { color: inherit; text-decoration: inherit; }
div.sourceCode { margin: 1em 0; }
pre.sourceCode { margin: 0; }
@media screen {
div.sourceCode { overflow: auto; }
}
@media print {
pre > code.sourceCode { white-space: pre-wrap; }
pre > code.sourceCode > span { text-indent: -5em; padding-left: 5em; }
}
pre.numberSource code
  { counter-reset: source-line 0; }
pre.numberSource code > span
  { position: relative; left: -4em; counter-increment: source-line; }
pre.numberSource code > span > a:first-child::before
  { content: counter(source-line);
    position: relative; left: -1em; text-align: right; vertical-align: baseline;
    border: none; display: inline-block;
    -webkit-touch-callout: none; -webkit-user-select: none;
    -khtml-user-select: none; -moz-user-select: none;
    -ms-user-select: none; user-select: none;
    padding: 0 4px; width: 4em;
  }
pre.numberSource { margin-left: 3em;  padding-left: 4px; }
div.sourceCode
  {   }
@media screen {
pre > code.sourceCode > span > a:first-child::before { text-decoration: underline; }
}
</style>

<script src="site_libs/quarto-nav/quarto-nav.js"></script>
<script src="site_libs/quarto-nav/headroom.min.js"></script>
<script src="site_libs/clipboard/clipboard.min.js"></script>
<script src="site_libs/quarto-search/autocomplete.umd.js"></script>
<script src="site_libs/quarto-search/fuse.min.js"></script>
<script src="site_libs/quarto-search/quarto-search.js"></script>
<meta name="quarto:offset" content="./">
<link href="./batch-method.html" rel="next">
<link href="./data-prepare.html" rel="prev">
<script src="site_libs/quarto-html/quarto.js"></script>
<script src="site_libs/quarto-html/popper.min.js"></script>
<script src="site_libs/quarto-html/tippy.umd.min.js"></script>
<script src="site_libs/quarto-html/anchor.min.js"></script>
<link href="site_libs/quarto-html/tippy.css" rel="stylesheet">
<link href="site_libs/quarto-html/quarto-syntax-highlighting.css" rel="stylesheet" id="quarto-text-highlighting-styles">
<script src="site_libs/bootstrap/bootstrap.min.js"></script>
<link href="site_libs/bootstrap/bootstrap-icons.css" rel="stylesheet">
<link href="site_libs/bootstrap/bootstrap.min.css" rel="stylesheet" id="quarto-bootstrap" data-mode="light"><script id="quarto-search-options" type="application/json">{
  "location": "sidebar",
  "copy-button": false,
  "collapse-after": 3,
  "panel-placement": "start",
  "type": "textbox",
  "limit": 50,
  "keyboard-shortcut": [
    "f",
    "/",
    "s"
  ],
  "show-item-context": false,
  "language": {
    "search-no-results-text": "No results",
    "search-matching-documents-text": "matching documents",
    "search-copy-link-title": "Copy link to search",
    "search-hide-matches-text": "Hide additional matches",
    "search-more-match-text": "more match in this document",
    "search-more-matches-text": "more matches in this document",
    "search-clear-button-title": "Clear",
    "search-text-placeholder": "",
    "search-detached-cancel-button-title": "Cancel",
    "search-submit-button-title": "Submit",
    "search-label": "搜索"
  }
}</script>
</head>
<body class="nav-sidebar floating">

<div id="quarto-search-results"></div>
  <header id="quarto-header" class="headroom fixed-top"><nav class="quarto-secondary-nav"><div class="container-fluid d-flex">
      <button type="button" class="quarto-btn-toggle btn" data-bs-toggle="collapse" data-bs-target=".quarto-sidebar-collapse-item" aria-controls="quarto-sidebar" aria-expanded="false" aria-label="切换侧边栏导航" onclick="if (window.quartoToggleHeadroom) { window.quartoToggleHeadroom(); }">
        <i class="bi bi-layout-text-sidebar-reverse"></i>
      </button>
        <nav class="quarto-page-breadcrumbs" aria-label="breadcrumb"><ol class="breadcrumb"><li class="breadcrumb-item"><a href="./data-prepare.html">数据准备</a></li><li class="breadcrumb-item"><a href="./data-import.html"><span class="chapter-number">5</span>&nbsp; <span class="chapter-title">数据读取的选项</span></a></li></ol></nav>
        <a class="flex-grow-1" role="button" data-bs-toggle="collapse" data-bs-target=".quarto-sidebar-collapse-item" aria-controls="quarto-sidebar" aria-expanded="false" aria-label="切换侧边栏导航" onclick="if (window.quartoToggleHeadroom) { window.quartoToggleHeadroom(); }">      
        </a>
      <button type="button" class="btn quarto-search-button" aria-label="" onclick="window.quartoOpenSearch();">
        <i class="bi bi-search"></i>
      </button>
    </div>
  </nav></header><!-- content --><div id="quarto-content" class="quarto-container page-columns page-rows-contents page-layout-article">
<!-- sidebar -->
  <nav id="quarto-sidebar" class="sidebar collapse collapse-horizontal quarto-sidebar-collapse-item sidebar-navigation floating overflow-auto"><div class="pt-lg-2 mt-2 text-left sidebar-header">
    <div class="sidebar-title mb-0 py-0">
      <a href="./">LI-6800 和 LI-6400 光合数据分析指南</a> 
        <div class="sidebar-tools-main">
    <a href="https://github.com/zhujiedong/photosynthesis-analysis/" title="Source Code" class="quarto-navigation-tool px-1" aria-label="Source Code"><i class="bi bi-github"></i></a>
</div>
    </div>
      </div>
        <div class="mt-2 flex-shrink-0 align-items-center">
        <div class="sidebar-search">
        <div id="quarto-search" class="" title="搜索"></div>
        </div>
        </div>
    <div class="sidebar-menu-container"> 
    <ul class="list-unstyled mt-1">
<li class="sidebar-item">
  <div class="sidebar-item-container"> 
  <a href="./index.html" class="sidebar-item-text sidebar-link">
 <span class="menu-text">欢迎</span></a>
  </div>
</li>
        <li class="sidebar-item">
  <div class="sidebar-item-container"> 
  <a href="./thanks.html" class="sidebar-item-text sidebar-link">
 <span class="menu-text">致谢</span></a>
  </div>
</li>
        <li class="sidebar-item">
  <div class="sidebar-item-container"> 
  <a href="./preface.html" class="sidebar-item-text sidebar-link">
 <span class="menu-text">序言</span></a>
  </div>
</li>
        <li class="sidebar-item">
  <div class="sidebar-item-container"> 
  <a href="./intro.html" class="sidebar-item-text sidebar-link">
 <span class="menu-text">介绍</span></a>
  </div>
</li>
        <li class="sidebar-item sidebar-item-section">
      <div class="sidebar-item-container"> 
            <a href="./basics.html" class="sidebar-item-text sidebar-link">
 <span class="menu-text">必备工具</span></a>
          <a class="sidebar-item-toggle text-start" data-bs-toggle="collapse" data-bs-target="#quarto-sidebar-section-1" aria-expanded="true" aria-label="切換部分">
            <i class="bi bi-chevron-right ms-2"></i>
          </a> 
      </div>
      <ul id="quarto-sidebar-section-1" class="collapse list-unstyled sidebar-section depth1 show">
<li class="sidebar-item">
  <div class="sidebar-item-container"> 
  <a href="./rbasics.html" class="sidebar-item-text sidebar-link">
 <span class="menu-text"><span class="chapter-number">1</span>&nbsp; <span class="chapter-title">R 相关的准备</span></span></a>
  </div>
</li>
          <li class="sidebar-item">
  <div class="sidebar-item-container"> 
  <a href="./python-basics.html" class="sidebar-item-text sidebar-link">
 <span class="menu-text"><span class="chapter-number">2</span>&nbsp; <span class="chapter-title">其他工具</span></span></a>
  </div>
</li>
      </ul>
</li>
        <li class="sidebar-item sidebar-item-section">
      <div class="sidebar-item-container"> 
            <a href="./packages.html" class="sidebar-item-text sidebar-link">
 <span class="menu-text">光合相关的软件包</span></a>
          <a class="sidebar-item-toggle text-start" data-bs-toggle="collapse" data-bs-target="#quarto-sidebar-section-2" aria-expanded="true" aria-label="切換部分">
            <i class="bi bi-chevron-right ms-2"></i>
          </a> 
      </div>
      <ul id="quarto-sidebar-section-2" class="collapse list-unstyled sidebar-section depth1 show">
<li class="sidebar-item">
  <div class="sidebar-item-container"> 
  <a href="./phtosyn-pacakges.html" class="sidebar-item-text sidebar-link">
 <span class="menu-text"><span class="chapter-number">3</span>&nbsp; <span class="chapter-title">光合专用软件包</span></span></a>
  </div>
</li>
          <li class="sidebar-item">
  <div class="sidebar-item-container"> 
  <a href="./general-packages.html" class="sidebar-item-text sidebar-link">
 <span class="menu-text"><span class="chapter-number">4</span>&nbsp; <span class="chapter-title">生态学通用软件包</span></span></a>
  </div>
</li>
      </ul>
</li>
        <li class="sidebar-item sidebar-item-section">
      <div class="sidebar-item-container"> 
            <a href="./data-prepare.html" class="sidebar-item-text sidebar-link">
 <span class="menu-text">数据准备</span></a>
          <a class="sidebar-item-toggle text-start" data-bs-toggle="collapse" data-bs-target="#quarto-sidebar-section-3" aria-expanded="true" aria-label="切換部分">
            <i class="bi bi-chevron-right ms-2"></i>
          </a> 
      </div>
      <ul id="quarto-sidebar-section-3" class="collapse list-unstyled sidebar-section depth1 show">
<li class="sidebar-item">
  <div class="sidebar-item-container"> 
  <a href="./data-import.html" class="sidebar-item-text sidebar-link active">
 <span class="menu-text"><span class="chapter-number">5</span>&nbsp; <span class="chapter-title">数据读取的选项</span></span></a>
  </div>
</li>
          <li class="sidebar-item">
  <div class="sidebar-item-container"> 
  <a href="./batch-method.html" class="sidebar-item-text sidebar-link">
 <span class="menu-text"><span class="chapter-number">6</span>&nbsp; <span class="chapter-title">数据的基本处理</span></span></a>
  </div>
</li>
      </ul>
</li>
        <li class="sidebar-item sidebar-item-section">
      <div class="sidebar-item-container"> 
            <a href="./light-response.html" class="sidebar-item-text sidebar-link">
 <span class="menu-text">光响应曲线简介</span></a>
          <a class="sidebar-item-toggle text-start" data-bs-toggle="collapse" data-bs-target="#quarto-sidebar-section-4" aria-expanded="true" aria-label="切換部分">
            <i class="bi bi-chevron-right ms-2"></i>
          </a> 
      </div>
      <ul id="quarto-sidebar-section-4" class="collapse list-unstyled sidebar-section depth1 show">
<li class="sidebar-item">
  <div class="sidebar-item-container"> 
  <a href="./nls-start.html" class="sidebar-item-text sidebar-link">
 <span class="menu-text"><span class="chapter-number">7</span>&nbsp; <span class="chapter-title">非线性拟合初值确定</span></span></a>
  </div>
</li>
          <li class="sidebar-item">
  <div class="sidebar-item-container"> 
  <a href="./hyp.html" class="sidebar-item-text sidebar-link">
 <span class="menu-text"><span class="chapter-number">8</span>&nbsp; <span class="chapter-title">直角双曲线模型</span></span></a>
  </div>
</li>
          <li class="sidebar-item">
  <div class="sidebar-item-container"> 
  <a href="./non-hypo.html" class="sidebar-item-text sidebar-link">
 <span class="menu-text"><span class="chapter-number">9</span>&nbsp; <span class="chapter-title">非直角双曲线模型</span></span></a>
  </div>
</li>
          <li class="sidebar-item">
  <div class="sidebar-item-container"> 
  <a href="./exp.html" class="sidebar-item-text sidebar-link">
 <span class="menu-text"><span class="chapter-number">10</span>&nbsp; <span class="chapter-title">指数模型</span></span></a>
  </div>
</li>
          <li class="sidebar-item">
  <div class="sidebar-item-container"> 
  <a href="./hyp-rev.html" class="sidebar-item-text sidebar-link">
 <span class="menu-text"><span class="chapter-number">11</span>&nbsp; <span class="chapter-title">直角双曲线的修正模型</span></span></a>
  </div>
</li>
          <li class="sidebar-item">
  <div class="sidebar-item-container"> 
  <a href="./aq-choose.html" class="sidebar-item-text sidebar-link">
 <span class="menu-text"><span class="chapter-number">12</span>&nbsp; <span class="chapter-title">如何选择合适的模型</span></span></a>
  </div>
</li>
          <li class="sidebar-item">
  <div class="sidebar-item-container"> 
  <a href="./big-leaf.html" class="sidebar-item-text sidebar-link">
 <span class="menu-text"><span class="chapter-number">13</span>&nbsp; <span class="chapter-title">大叶模型</span></span></a>
  </div>
</li>
          <li class="sidebar-item">
  <div class="sidebar-item-container"> 
  <a href="./python-aq-gui.html" class="sidebar-item-text sidebar-link">
 <span class="menu-text"><span class="chapter-number">14</span>&nbsp; <span class="chapter-title">介绍</span></span></a>
  </div>
</li>
      </ul>
</li>
        <li class="sidebar-item sidebar-item-section">
      <div class="sidebar-item-container"> 
            <a href="./aci-curve.html" class="sidebar-item-text sidebar-link">
 <span class="menu-text">二氧化碳响应曲线概述</span></a>
          <a class="sidebar-item-toggle text-start" data-bs-toggle="collapse" data-bs-target="#quarto-sidebar-section-5" aria-expanded="true" aria-label="切換部分">
            <i class="bi bi-chevron-right ms-2"></i>
          </a> 
      </div>
      <ul id="quarto-sidebar-section-5" class="collapse list-unstyled sidebar-section depth1 show">
<li class="sidebar-item">
  <div class="sidebar-item-container"> 
  <a href="./aci.html" class="sidebar-item-text sidebar-link">
 <span class="menu-text"><span class="chapter-number">15</span>&nbsp; <span class="chapter-title">Aci 曲线拟合相关</span></span></a>
  </div>
</li>
          <li class="sidebar-item">
  <div class="sidebar-item-container"> 
  <a href="./DAT-vs-racir.html" class="sidebar-item-text sidebar-link">
 <span class="menu-text"><span class="chapter-number">16</span>&nbsp; <span class="chapter-title">快速<code>ACi</code> 曲线 (RACiR)</span></span></a>
  </div>
</li>
          <li class="sidebar-item">
  <div class="sidebar-item-container"> 
  <a href="./plantecowraps.html" class="sidebar-item-text sidebar-link">
 <span class="menu-text"><span class="chapter-number">17</span>&nbsp; <span class="chapter-title">plantecowrap 温度相关拟合</span></span></a>
  </div>
</li>
          <li class="sidebar-item">
  <div class="sidebar-item-container"> 
  <a href="./Rd.html" class="sidebar-item-text sidebar-link">
 <span class="menu-text"><span class="chapter-number">18</span>&nbsp; <span class="chapter-title">Rd 呼吸 相关</span></span></a>
  </div>
</li>
          <li class="sidebar-item">
  <div class="sidebar-item-container"> 
  <a href="./C4-related.html" class="sidebar-item-text sidebar-link">
 <span class="menu-text"><span class="chapter-number">19</span>&nbsp; <span class="chapter-title">C4 植物光合模拟</span></span></a>
  </div>
</li>
      </ul>
</li>
        <li class="sidebar-item sidebar-item-section">
      <div class="sidebar-item-container"> 
            <a href="./fluorescence.html" class="sidebar-item-text sidebar-link">
 <span class="menu-text">叶绿素荧光数据的处理</span></a>
          <a class="sidebar-item-toggle text-start" data-bs-toggle="collapse" data-bs-target="#quarto-sidebar-section-6" aria-expanded="true" aria-label="切換部分">
            <i class="bi bi-chevron-right ms-2"></i>
          </a> 
      </div>
      <ul id="quarto-sidebar-section-6" class="collapse list-unstyled sidebar-section depth1 show">
<li class="sidebar-item">
  <div class="sidebar-item-container"> 
  <a href="./jiptest.html" class="sidebar-item-text sidebar-link">
 <span class="menu-text"><span class="chapter-number">20</span>&nbsp; <span class="chapter-title">LI-6800 JIP test 分析</span></span></a>
  </div>
</li>
          <li class="sidebar-item">
  <div class="sidebar-item-container"> 
  <a href="./other-fluor.html" class="sidebar-item-text sidebar-link">
 <span class="menu-text"><span class="chapter-number">21</span>&nbsp; <span class="chapter-title">其他叶绿素荧光数据处理</span></span></a>
  </div>
</li>
      </ul>
</li>
        <li class="sidebar-item sidebar-item-section">
      <div class="sidebar-item-container"> 
            <a href="./gm-gs.html" class="sidebar-item-text sidebar-link">
 <span class="menu-text">叶肉与气孔导度</span></a>
          <a class="sidebar-item-toggle text-start" data-bs-toggle="collapse" data-bs-target="#quarto-sidebar-section-7" aria-expanded="true" aria-label="切換部分">
            <i class="bi bi-chevron-right ms-2"></i>
          </a> 
      </div>
      <ul id="quarto-sidebar-section-7" class="collapse list-unstyled sidebar-section depth1 show">
<li class="sidebar-item">
  <div class="sidebar-item-container"> 
  <a href="./gs.html" class="sidebar-item-text sidebar-link">
 <span class="menu-text"><span class="chapter-number">22</span>&nbsp; <span class="chapter-title">气孔导度模型的拟合</span></span></a>
  </div>
</li>
          <li class="sidebar-item">
  <div class="sidebar-item-container"> 
  <a href="./gm.html" class="sidebar-item-text sidebar-link">
 <span class="menu-text"><span class="chapter-number">23</span>&nbsp; <span class="chapter-title">叶肉导度计算</span></span></a>
  </div>
</li>
      </ul>
</li>
        <li class="sidebar-item sidebar-item-section">
      <div class="sidebar-item-container"> 
            <a href="./other-stat.html" class="sidebar-item-text sidebar-link">
 <span class="menu-text">其他统计方法</span></a>
          <a class="sidebar-item-toggle text-start" data-bs-toggle="collapse" data-bs-target="#quarto-sidebar-section-8" aria-expanded="true" aria-label="切換部分">
            <i class="bi bi-chevron-right ms-2"></i>
          </a> 
      </div>
      <ul id="quarto-sidebar-section-8" class="collapse list-unstyled sidebar-section depth1 show">
<li class="sidebar-item">
  <div class="sidebar-item-container"> 
  <a href="./common-stat.html" class="sidebar-item-text sidebar-link">
 <span class="menu-text"><span class="chapter-number">24</span>&nbsp; <span class="chapter-title">正态分布检验</span></span></a>
  </div>
</li>
          <li class="sidebar-item">
  <div class="sidebar-item-container"> 
  <a href="./pca.html" class="sidebar-item-text sidebar-link">
 <span class="menu-text"><span class="chapter-number">25</span>&nbsp; <span class="chapter-title">大话 PCA</span></span></a>
  </div>
</li>
          <li class="sidebar-item">
  <div class="sidebar-item-container"> 
  <a href="./smatr.html" class="sidebar-item-text sidebar-link">
 <span class="menu-text"><span class="chapter-number">26</span>&nbsp; <span class="chapter-title">标准主轴分析介绍</span></span></a>
  </div>
</li>
      </ul>
</li>
        <li class="sidebar-item">
  <div class="sidebar-item-container"> 
  <a href="./references.html" class="sidebar-item-text sidebar-link">
 <span class="menu-text"><span class="chapter-number">27</span>&nbsp; <span class="chapter-title">参考文献</span></span></a>
  </div>
</li>
        <li class="sidebar-item sidebar-item-section">
      <div class="sidebar-item-container"> 
            <a class="sidebar-item-text sidebar-link text-start" data-bs-toggle="collapse" data-bs-target="#quarto-sidebar-section-9" aria-expanded="true">
 <span class="menu-text">Appendices</span></a>
          <a class="sidebar-item-toggle text-start" data-bs-toggle="collapse" data-bs-target="#quarto-sidebar-section-9" aria-expanded="true" aria-label="切換部分">
            <i class="bi bi-chevron-right ms-2"></i>
          </a> 
      </div>
      <ul id="quarto-sidebar-section-9" class="collapse list-unstyled sidebar-section depth1 show">
<li class="sidebar-item">
  <div class="sidebar-item-container"> 
  <a href="./a1-run-environment.html" class="sidebar-item-text sidebar-link">
 <span class="menu-text"><span class="chapter-number">A</span>&nbsp; <span class="chapter-title">运行环境</span></span></a>
  </div>
</li>
      </ul>
</li>
    </ul>
</div>
</nav><div id="quarto-sidebar-glass" class="quarto-sidebar-collapse-item" data-bs-toggle="collapse" data-bs-target=".quarto-sidebar-collapse-item"></div>
<!-- margin-sidebar -->
    <div id="quarto-margin-sidebar" class="sidebar margin-sidebar">
        <nav id="TOC" role="doc-toc" class="toc-active"><h2 id="toc-title">Table of contents</h2>
   
  <ul>
<li><a href="#sec-6400-excel" id="toc-sec-6400-excel" class="nav-link active" data-scroll-target="#sec-6400-excel"><span class="header-section-number">5.1</span> LI-6400 Excel 的处理</a></li>
  <li>
<a href="#%E4%BB%A5%E4%B8%8B%E5%86%85%E5%AE%B9%E4%B8%8D%E5%86%8D%E6%8E%A8%E8%8D%90%E5%BB%BA%E8%AE%AE%E5%8F%82%E8%80%83" id="toc-以下内容不再推荐建议参考" class="nav-link" data-scroll-target="#%E4%BB%A5%E4%B8%8B%E5%86%85%E5%AE%B9%E4%B8%8D%E5%86%8D%E6%8E%A8%E8%8D%90%E5%BB%BA%E8%AE%AE%E5%8F%82%E8%80%83"><span class="header-section-number">5.2</span> 以下内容不再推荐，建议参考：</a>
  <ul class="collapse">
<li><a href="#sec-6400excel2csv" id="toc-sec-6400excel2csv" class="nav-link" data-scroll-target="#sec-6400excel2csv"><span class="header-section-number">5.2.1</span> 整理为 csv 格式</a></li>
  <li><a href="#sec-install_readphoto" id="toc-sec-install_readphoto" class="nav-link" data-scroll-target="#sec-install_readphoto"><span class="header-section-number">5.2.2</span> 安装</a></li>
  <li><a href="#sec-6400combine" id="toc-sec-6400combine" class="nav-link" data-scroll-target="#sec-6400combine"><span class="header-section-number">5.2.3</span> LI-6400 数据的整合</a></li>
  <li><a href="#sec-recompute6400" id="toc-sec-recompute6400" class="nav-link" data-scroll-target="#sec-recompute6400"><span class="header-section-number">5.2.4</span> LI-6400 数据重计算</a></li>
  </ul>
</li>
  <li>
<a href="#sec-6800-excel-data" id="toc-sec-6800-excel-data" class="nav-link" data-scroll-target="#sec-6800-excel-data"><span class="header-section-number">5.3</span> LI-6800 Excel 的处理</a>
  <ul class="collapse">
<li><a href="#sec-6800xlconnect" id="toc-sec-6800xlconnect" class="nav-link" data-scroll-target="#sec-6800xlconnect"><span class="header-section-number">5.3.1</span> R 下 Excel 格式读取的重计算</a></li>
  <li><a href="#sec-6800-readxl-batch" id="toc-sec-6800-readxl-batch" class="nav-link" data-scroll-target="#sec-6800-readxl-batch"><span class="header-section-number">5.3.2</span> 无需重计算直接读取</a></li>
  <li><a href="#sec-6800-import-python" id="toc-sec-6800-import-python" class="nav-link" data-scroll-target="#sec-6800-import-python"><span class="header-section-number">5.3.3</span> 使用 Python 来处理</a></li>
  <li><a href="#sec-6800-batch" id="toc-sec-6800-batch" class="nav-link" data-scroll-target="#sec-6800-batch"><span class="header-section-number">5.3.4</span> 批量处理 csv 文件</a></li>
  </ul>
</li>
  </ul><div class="toc-actions"><ul><li><a href="https://github.com/zhujiedong/photosynthesis-analysis/edit/master/data-import.qmd" class="toc-action"><i class="bi bi-github"></i>Edit this page</a></li></ul></div></nav>
    </div>
<!-- main -->
<main class="content" id="quarto-document-content"><header id="title-block-header" class="quarto-title-block default"><nav class="quarto-page-breadcrumbs quarto-title-breadcrumbs d-none d-lg-block" aria-label="breadcrumb"><ol class="breadcrumb"><li class="breadcrumb-item"><a href="./data-prepare.html">数据准备</a></li><li class="breadcrumb-item"><a href="./data-import.html"><span class="chapter-number">5</span>&nbsp; <span class="chapter-title">数据读取的选项</span></a></li></ol></nav><div class="quarto-title">
<h1 class="title"><span id="sec-excel2csv" class="quarto-section-identifier"><span class="chapter-number">5</span>&nbsp; <span class="chapter-title">数据读取的选项</span></span></h1>
</div>



<div class="quarto-title-meta">

    
  
    
  </div>
  


</header><p>下面的 R 软件包不再维护，建议参考@sec-6800-import-python中python图形界面的批量处理方式。</p>
<p><del>鉴于无论是 LI-6400 还是 LI-6800 数据 Excel 格式的复杂性，目前已知的能处理的软件包有 <code>R</code> 的 <a href="https://cran.r-project.org/web/packages/XLConnect/index.html"><code>XLConnect</code></a> 和 <a href="https://www.xlwings.org"><code>xlwings</code></a>，文中对直接下载的 Excel 格式的数据转换，均依赖于此进行。</del></p>
<section id="sec-6400-excel" class="level2" data-number="5.1"><h2 data-number="5.1" class="anchored" data-anchor-id="sec-6400-excel">
<span class="header-section-number">5.1</span> LI-6400 Excel 的处理</h2>
</section><section id="以下内容不再推荐建议参考" class="level2" data-number="5.2"><h2 data-number="5.2" class="anchored" data-anchor-id="以下内容不再推荐建议参考">
<span class="header-section-number">5.2</span> 以下内容不再推荐，建议参考：</h2>
<section id="sec-6400excel2csv" class="level3" data-number="5.2.1"><h3 data-number="5.2.1" class="anchored" data-anchor-id="sec-6400excel2csv">
<span class="header-section-number">5.2.1</span> 整理为 csv 格式</h3>
<p>详见：<a href="https://mp.weixin.qq.com/s?__biz=MzU4ODI3NjkzMg==&amp;mid=2247486343&amp;idx=1&amp;sn=32a74ce02400450961c9c5fa0ea24919&amp;chksm=fdde7e2ccaa9f73aabda254928707b9ccf08305b7198466cc0b298c7214c9236a3b399df9fa6&amp;token=787620345&amp;lang=zh_CN#rd">LI-6400 EXCEL2CSV</a></p>
</section><section id="sec-install_readphoto" class="level3" data-number="5.2.2"><h3 data-number="5.2.2" class="anchored" data-anchor-id="sec-install_readphoto">
<span class="header-section-number">5.2.2</span> 安装</h3>
<p>暂时只有我的 github repo 中的版本：</p>
<div class="cell">
<details open="" class="code-fold"><summary>Code</summary><div class="sourceCode" id="cb1"><pre class="downlit sourceCode r code-with-copy"><code class="sourceCode R"><span><span class="fu">remotes</span><span class="fu">::</span><span class="fu"><a href="https://remotes.r-lib.org/reference/install_github.html">install_github</a></span><span class="op">(</span><span class="st">"zhujiedong/readphoto"</span><span class="op">)</span></span>
<span><span class="co"># 或</span></span>
<span><span class="fu">remotes</span><span class="fu">::</span><span class="fu"><a href="https://remotes.r-lib.org/reference/install_git.html">install_git</a></span><span class="op">(</span><span class="st">"https://gitee.com/zhu_jie_dong/readphoto"</span><span class="op">)</span></span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
</details>
</div>
</section><section id="sec-6400combine" class="level3" data-number="5.2.3"><h3 data-number="5.2.3" class="anchored" data-anchor-id="sec-6400combine">
<span class="header-section-number">5.2.3</span> LI-6400 数据的整合</h3>
<p>将所有 LI-6400 的 <strong>原始数据文件</strong> 放置于一个文件夹下，例如下面代码放在了名为 6400 的文件夹内，基本参数如下：</p>
<div class="sourceCode" id="cb2"><pre class="downlit sourceCode r code-with-copy"><code class="sourceCode R"><span><span class="co">#| label: read_bat_6400</span></span>
<span><span class="kw"><a href="https://rdrr.io/r/base/library.html">library</a></span><span class="op">(</span><span class="va">readphoto</span><span class="op">)</span></span>
<span><span class="va">df64</span>  <span class="op">&lt;-</span> <span class="fu">read_bat_6400</span><span class="op">(</span><span class="st">"data/6400"</span>, header_line <span class="op">=</span> <span class="fl">17</span>, data_start <span class="op">=</span> <span class="fl">27</span><span class="op">)</span></span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
<p>其中 header_line 是表头所在行，即 <code>obs</code> 开始的那一行的行号，data_start 也就是我们实际测量数据开始的行号，数据输出如下所示(仅显示前8列数据)：</p>
<div class="sourceCode" id="cb3"><pre class="downlit sourceCode r code-with-copy"><code class="sourceCode R"><span><span class="co">#| label: 6400kable</span></span>
<span><span class="co">#| echo: false</span></span>
<span></span>
<span><span class="fu">kable</span><span class="op">(</span><span class="fu"><a href="https://rdrr.io/r/utils/head.html">head</a></span><span class="op">(</span><span class="va">df64</span><span class="op">)</span>, caption <span class="op">=</span> <span class="st">'LI-6400 批量整合数据{#tbl-6400-importkable}'</span><span class="op">)</span></span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
<p>如果想另存为 csv 格式：</p>
<div class="sourceCode" id="cb4"><pre class="downlit sourceCode r code-with-copy"><code class="sourceCode R"><span><span class="fu"><a href="https://rdrr.io/r/utils/write.table.html">write.csv</a></span><span class="op">(</span><span class="va">df64</span>, <span class="st">"./combined.csv"</span><span class="op">)</span></span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
<p>header_line 表示你数据表头所在行，data_start 表示你数据起始行，Obs = 1 时所在行，不含表头。这个也要确认好了，不同的测量不能放在一起（务必不要混淆，不然所有数据会放在一个文件夹内），不同的测量可能起始行不同，这样就会报错。</p>
<p>其中，数据的来源在表格中第一列，叫做 files，是数据来源的文件名（即你起的名字）,例如本例中你看到的 aci 是我之前数据里面 aci 响应曲线的数据。</p>
<p>这些数据可以用于后文相关的分析中，尤其是像 <code>fitacis</code> 这样的函数，因为本质上他们都是符合 <code>tidyverse</code> 样式的数据。</p>
</section><section id="sec-recompute6400" class="level3" data-number="5.2.4"><h3 data-number="5.2.4" class="anchored" data-anchor-id="sec-recompute6400">
<span class="header-section-number">5.2.4</span> LI-6400 数据重计算</h3>
<p>参数的重计算函数为 <code>recomp_6400</code>, 其参数除了 <code>read_bat_6400</code> 所包含的参数外，还有叶面积 S, 以及叶片正反面的气孔比例，默认值分别为 6 和 0.5。</p>
<div class="sourceCode" id="cb5"><pre class="downlit sourceCode r code-with-copy"><code class="sourceCode R"><span><span class="co">#| label: revise-6400-area</span></span>
<span></span>
<span><span class="kw"><a href="https://rdrr.io/r/base/library.html">library</a></span><span class="op">(</span><span class="va">readphoto</span><span class="op">)</span></span>
<span><span class="va">x1</span> <span class="op">&lt;-</span> <span class="fu">read_bat_6400</span><span class="op">(</span><span class="st">"./data/6400"</span><span class="op">)</span></span>
<span><span class="va">y1</span> <span class="op">&lt;-</span> <span class="fu">recomp_6400</span><span class="op">(</span><span class="st">"./data/6400"</span>, header_line <span class="op">=</span> <span class="fl">17</span>, data_start <span class="op">=</span> <span class="fl">27</span>, S <span class="op">=</span> <span class="fl">6</span>, K <span class="op">=</span> <span class="fl">0.5</span><span class="op">)</span></span>
<span></span>
<span><span class="va">x1</span><span class="op">$</span><span class="va">Photo</span> <span class="op">-</span> <span class="va">y1</span><span class="op">$</span><span class="va">Photo</span></span>
<span><span class="va">x1</span><span class="op">$</span><span class="va">Trmmol</span> <span class="op">-</span> <span class="va">y1</span><span class="op">$</span><span class="va">Trmmol</span></span>
<span><span class="va">x1</span><span class="op">$</span><span class="va">Cond</span> <span class="op">-</span> <span class="va">y1</span><span class="op">$</span><span class="va">Cond</span></span>
<span><span class="va">x1</span><span class="op">$</span><span class="va">Ci</span><span class="op">-</span><span class="va">y1</span><span class="op">$</span><span class="va">Ci</span></span>
<span></span>
<span><span class="co"># half of original the area</span></span>
<span><span class="va">y1</span> <span class="op">&lt;-</span> <span class="fu">recomp_6400</span><span class="op">(</span><span class="st">"./data/6400"</span>,  header_line <span class="op">=</span> <span class="fl">17</span>, data_start <span class="op">=</span> <span class="fl">27</span>, S <span class="op">=</span> <span class="fl">3</span>, K <span class="op">=</span> <span class="fl">0.5</span><span class="op">)</span></span>
<span><span class="va">y1</span><span class="op">$</span><span class="va">Photo</span><span class="op">/</span><span class="va">x1</span><span class="op">$</span><span class="va">Photo</span></span>
<span></span>
<span><span class="co"># test with random area less than six</span></span>
<span><span class="va">area</span> <span class="op">&lt;-</span> <span class="fl">6</span> <span class="op">-</span> <span class="fu"><a href="https://rdrr.io/r/stats/Uniform.html">runif</a></span><span class="op">(</span><span class="fl">32</span>, <span class="fl">1</span>, <span class="fl">3</span><span class="op">)</span></span>
<span><span class="va">y1</span> <span class="op">&lt;-</span> <span class="fu">recomp_6400</span><span class="op">(</span><span class="st">"./data/6400"</span>,  header_line <span class="op">=</span> <span class="fl">17</span>, data_start <span class="op">=</span> <span class="fl">27</span>, S <span class="op">=</span> <span class="va">area</span>, K <span class="op">=</span> <span class="fl">0.5</span><span class="op">)</span></span>
<span><span class="va">y1</span><span class="op">$</span><span class="va">Photo</span><span class="op">/</span><span class="va">x1</span><span class="op">$</span><span class="va">Photo</span></span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
<p>我们看到各个值之差非常小，因为我们使用的是相同的叶面积，理论上这两次读数的差异应为 0， 但在实际计算过程中，有小数点位数的影响，所以某些值不完全为 0，但该差值足够小。我们将所有的数据叶面积减半后，二者比值也约等于 2.</p>
</section></section><section id="sec-6800-excel-data" class="level2" data-number="5.3"><h2 data-number="5.3" class="anchored" data-anchor-id="sec-6800-excel-data">
<span class="header-section-number">5.3</span> LI-6800 Excel 的处理</h2>
<p>LI-6800 的数据我们可以直接处理 Excel 即可，我们分开来看两种方式：</p>
<section id="sec-6800xlconnect" class="level3" data-number="5.3.1"><h3 data-number="5.3.1" class="anchored" data-anchor-id="sec-6800xlconnect">
<span class="header-section-number">5.3.1</span> R 下 Excel 格式读取的重计算</h3>
<p><code>XLConnect</code> 直接读取功能比较麻烦，为了节省时间，我将其写成了函数，放在了我的 <code>readphoto</code> 软件包里，软件包的安装参考 <a href="#sec-install_readphoto" class="quarto-xref"><span>sec. 5.2.2</span></a> ：</p>
<p>当然，最近连我自己安装 github 的软件包都经常出问题，如果大家同样遇到问题，可以按照下面的方式安装：</p>
<p>它的参数很少，主要作用为：</p>
<ul>
<li><p>path 是 Excel 文件的路径；</p></li>
<li><p>start_row 是数据开始的行号；</p></li>
<li><p>S 为修改的叶面积，默认值为 6，如果叶面积无需更改，则使用默认的 NULL。如果叶面积非默认值，该值必须输入一个长度和测量值数量完全一致的向量，例如，一共有三个测量值，只有第一个叶片没充满叶室，面积为 1.5，其他的为 2，则输入方式为 S = c(1.5, 2, 2)。</p></li>
</ul>
<p>我们直接使用下面的例子解释，导入的数据是 6 cm<sup>2</sup> 的默认面积：</p>
<div class="sourceCode" id="cb6"><pre class="downlit sourceCode r code-with-copy"><code class="sourceCode R"><span><span class="co">#| label: revise-6800-area</span></span>
<span></span>
<span><span class="kw"><a href="https://rdrr.io/r/base/library.html">library</a></span><span class="op">(</span><span class="va">readphoto</span><span class="op">)</span></span>
<span></span>
<span><span class="va">df6</span> <span class="op">&lt;-</span> <span class="fu">xlconnect_read</span><span class="op">(</span><span class="st">"./data/aci-xlc.xlsx"</span><span class="op">)</span></span>
<span><span class="va">df6</span><span class="op">$</span><span class="va">A</span></span>
<span></span>
<span></span>
<span><span class="va">df3</span> <span class="op">&lt;-</span> <span class="fu">xlconnect_read</span><span class="op">(</span><span class="st">"./data/aci-xlc.xlsx"</span>, S <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/rep.html">rep</a></span><span class="op">(</span><span class="fl">3</span>, <span class="fl">12</span><span class="op">)</span><span class="op">)</span></span>
<span><span class="va">df6</span><span class="op">$</span><span class="va">A</span><span class="op">/</span><span class="va">df3</span><span class="op">$</span><span class="va">A</span></span>
<span></span>
<span></span>
<span><span class="va">df_random</span> <span class="op">&lt;-</span> <span class="fu">xlconnect_read</span><span class="op">(</span><span class="st">"./data/aci-xlc.xlsx"</span>, S <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/stats/Normal.html">rnorm</a></span><span class="op">(</span><span class="fl">12</span>, <span class="fl">3</span>, <span class="fl">0.1</span><span class="op">)</span><span class="op">)</span></span>
<span><span class="va">df6</span><span class="op">$</span><span class="va">A</span><span class="op">/</span><span class="va">df_random</span><span class="op">$</span><span class="va">A</span></span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
<p>光合速率的倍数的变化在预期之内。</p>
</section><section id="sec-6800-readxl-batch" class="level3" data-number="5.3.2"><h3 data-number="5.3.2" class="anchored" data-anchor-id="sec-6800-readxl-batch">
<span class="header-section-number">5.3.2</span> 无需重计算直接读取</h3>
<div class="callout callout-style-default callout-note callout-titled">
<div class="callout-header d-flex align-content-center">
<div class="callout-icon-container">
<i class="callout-icon"></i>
</div>
<div class="callout-title-container flex-fill">
注意
</div>
</div>
<div class="callout-body-container callout-body">
<p>该功能需要启用 excel 的迭代计算，具体为<strong>文件 –&gt; 选项–&gt; 公式 –&gt; 启动迭代计算</strong>，否则导入的带公式的单元格数值为 0。</p>
</div>
</div>
<div id="fig-excel-iter" class="quarto-figure quarto-figure-center quarto-float anchored">
<figure class="quarto-float quarto-float-fig figure"><div aria-describedby="fig-excel-iter-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
<img src="https://s4.ax1x.com/2022/01/25/7HarSf.gif" class="img-fluid figure-img">
</div>
<figcaption class="quarto-float-caption-bottom quarto-float-caption quarto-float-fig" id="fig-excel-iter-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
Figure&nbsp;5.1: exce 启动迭代计算
</figcaption></figure>
</div>
<section id="安装" class="level4"><h4 class="anchored" data-anchor-id="安装">安装</h4>
<div class="sourceCode" id="cb7"><pre class="downlit sourceCode r code-with-copy"><code class="sourceCode R"><span><span class="co"># install.packages("devtools")</span></span>
<span><span class="co">#devtools::install_github("zhujiedong/ReadLICOR6800")</span></span>
<span><span class="fu">remotes</span><span class="fu">::</span><span class="fu"><a href="https://remotes.r-lib.org/reference/install_git.html">install_git</a></span><span class="op">(</span><span class="st">"https://gitee.com/zhu_jie_dong/ReadLICOR6800"</span><span class="op">)</span></span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
<p>使用比较简单，第一个函数用于读取单个数据文件：</p>
<div class="sourceCode" id="cb8"><pre class="downlit sourceCode r code-with-copy"><code class="sourceCode R"><span><span class="kw"><a href="https://rdrr.io/r/base/library.html">library</a></span><span class="op">(</span><span class="va">ReadLICOR6800</span><span class="op">)</span></span>
<span><span class="va">aci</span> <span class="op">&lt;-</span> <span class="fu">read_li6800</span><span class="op">(</span><span class="st">'data/batch6800/racirtest1.xlsx'</span><span class="op">)</span></span>
<span><span class="va">aci</span><span class="op">[</span><span class="fl">1</span><span class="op">:</span><span class="fl">3</span>, <span class="fl">1</span><span class="op">:</span><span class="fl">6</span><span class="op">]</span></span>
<span><span class="fu"><a href="https://rdrr.io/r/base/names.html">names</a></span><span class="op">(</span><span class="va">aci</span><span class="op">)</span></span>
<span><span class="va">aci</span><span class="op">$</span><span class="va">data_tag</span></span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
<p>默认的参数会添加 <code>data_tag</code> 列，用于读取多个文件时候区分数据用，默认的不坐修改的标签是文件名，若要修改，指定 <code>tags</code> 参数为我们需要的标签即可。</p>
<p>若单纯读取单个文件，也没有必要加标签，但加或者不加对我们分析数据没有任何影响：</p>
<div class="sourceCode" id="cb9"><pre class="downlit sourceCode r code-with-copy"><code class="sourceCode R"><span><span class="va">aci</span> <span class="op">&lt;-</span> <span class="fu">read_li6800</span><span class="op">(</span><span class="st">"data/batch6800/racirtest1.xlsx"</span>, add_tags <span class="op">=</span> <span class="cn">FALSE</span><span class="op">)</span></span>
<span><span class="fu"><a href="https://rdrr.io/r/base/names.html">names</a></span><span class="op">(</span><span class="va">aci</span><span class="op">)</span></span>
<span><span class="fu"><a href="https://rdrr.io/r/utils/head.html">head</a></span><span class="op">(</span><span class="va">aci</span><span class="op">$</span><span class="va">data_tags</span><span class="op">)</span></span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
</section><section id="批量读取多个数据文件" class="level4"><h4 class="anchored" data-anchor-id="批量读取多个数据文件">批量读取多个数据文件</h4>
<p>与上面的函数类似，本身就是对其进行了包裹，方便不熟悉使用的人能够一次批量读取所有文件，需要注意所有文件的列数必须相同，这多数时候不会出现问题，多台光合仪同时使用时配置文件一致即可。否则只能分开读取再合并。使用 <code>tags=NULL</code>(默认), <code>data_tag</code>会显示文件名：</p>
<div class="sourceCode" id="cb10"><pre class="downlit sourceCode r code-with-copy"><code class="sourceCode R"><span><span class="fu"><a href="https://rdrr.io/r/base/list.files.html">list.files</a></span><span class="op">(</span><span class="st">"data/batch6800/"</span><span class="op">)</span></span>
<span></span>
<span><span class="va">aci</span> <span class="op">&lt;-</span> <span class="fu">read_li6800_folder</span><span class="op">(</span><span class="st">"data/batch6800/"</span><span class="op">)</span></span>
<span><span class="fu"><a href="https://rdrr.io/r/base/names.html">names</a></span><span class="op">(</span><span class="va">aci</span><span class="op">)</span></span>
<span><span class="fu"><a href="https://rdrr.io/r/utils/head.html">head</a></span><span class="op">(</span><span class="va">aci</span><span class="op">$</span><span class="va">data_tag</span><span class="op">)</span></span>
<span><span class="fu"><a href="https://rdrr.io/r/utils/head.html">tail</a></span><span class="op">(</span><span class="va">aci</span><span class="op">$</span><span class="va">data_tag</span><span class="op">)</span></span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
<p>当指定自定义标签时，需要 <code>tags</code> 给出的标签的长度和顺序要与 <code><a href="https://rdrr.io/r/base/list.files.html">list.files()</a></code> 显示的一致才可以。</p>
<div class="sourceCode" id="cb11"><pre class="downlit sourceCode r code-with-copy"><code class="sourceCode R"><span><span class="va">aci</span> <span class="op">&lt;-</span> <span class="fu">read_li6800_folder</span><span class="op">(</span><span class="st">"data/batch6800/"</span>, tags <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/paste.html">paste</a></span><span class="op">(</span><span class="st">'test'</span>, <span class="fl">1</span><span class="op">:</span><span class="fl">2</span><span class="op">)</span><span class="op">)</span></span>
<span><span class="va">aci</span><span class="op">[</span><span class="fl">1</span><span class="op">:</span><span class="fl">3</span>, <span class="fl">1</span><span class="op">:</span><span class="fl">6</span><span class="op">]</span></span>
<span><span class="fu"><a href="https://rdrr.io/r/base/names.html">names</a></span><span class="op">(</span><span class="va">aci</span><span class="op">)</span></span>
<span><span class="fu"><a href="https://rdrr.io/r/utils/head.html">head</a></span><span class="op">(</span><span class="va">aci</span><span class="op">$</span><span class="va">data_tag</span><span class="op">)</span></span>
<span><span class="fu"><a href="https://rdrr.io/r/utils/head.html">tail</a></span><span class="op">(</span><span class="va">aci</span><span class="op">$</span><span class="va">data_tag</span><span class="op">)</span></span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
<p>也十分方便。</p>
</section></section><section id="sec-6800-import-python" class="level3" data-number="5.3.3"><h3 data-number="5.3.3" class="anchored" data-anchor-id="sec-6800-import-python">
<span class="header-section-number">5.3.3</span> 使用 Python 来处理</h3>
<p>目前版本的使用非常简单，可参考：</p>
<p><a href="https://mp.weixin.qq.com/s/ZTb6hUfgpubC7BsB8i2VJA">批量处理数据</a></p>
<p>下载连接：</p>
<pre><code># 百度网盘
链接：https://pan.baidu.com/s/18vi3jAd_T1m8UjAHa4TfoQ 
提取码：1111

# 夸克网盘
链接：https://pan.quark.cn/s/3aa949607afd

# 阿里云盘
https://www.aliyundrive.com/s/43nmbKCqEve
</code></pre>
</section><section id="sec-6800-batch" class="level3" data-number="5.3.4"><h3 data-number="5.3.4" class="anchored" data-anchor-id="sec-6800-batch">
<span class="header-section-number">5.3.4</span> 批量处理 csv 文件</h3>
<p>如果还是比习惯用 <code>R</code>，我们来处理上面的 <code>csv</code> 文件即可 (期望后面添加到软件包里，成为一个函数，<code>r</code>Sys.Date()` 尚未有时间修改)：</p>
<div class="cell">
<details open="" class="code-fold"><summary>Code</summary><div class="sourceCode" id="cb13"><pre class="downlit sourceCode r code-with-copy"><code class="sourceCode R"><span><span class="va">files_csv</span> <span class="op">&lt;-</span> <span class="fu"><a href="https://rdrr.io/r/base/list.files.html">list.files</a></span><span class="op">(</span><span class="st">"./data/csvdata"</span>, full.names <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span></span>
<span><span class="va">files_csv</span></span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
</details><div class="cell-output cell-output-stdout">
<pre><code>[1] "./data/csvdata/racirtest1.csv" "./data/csvdata/rcirtest3.csv" </code></pre>
</div>
<details open="" class="code-fold"><summary>Code</summary><div class="sourceCode" id="cb15"><pre class="downlit sourceCode r code-with-copy"><code class="sourceCode R"><span><span class="va">add_remark</span> <span class="op">&lt;-</span> <span class="kw">function</span><span class="op">(</span><span class="va">path</span><span class="op">)</span><span class="op">{</span></span>
<span>  <span class="va">df</span> <span class="op">&lt;-</span> <span class="fu"><a href="https://rdrr.io/r/utils/read.table.html">read.csv</a></span><span class="op">(</span><span class="va">path</span><span class="op">)</span></span>
<span>  <span class="va">df</span><span class="op">$</span><span class="va">remarks</span> <span class="op">&lt;-</span> <span class="fu"><a href="https://rdrr.io/r/base/grep.html">gsub</a></span><span class="op">(</span><span class="st">".csv"</span>, <span class="st">""</span>, <span class="fu"><a href="https://rdrr.io/r/base/basename.html">basename</a></span><span class="op">(</span><span class="va">path</span><span class="op">)</span><span class="op">)</span></span>
<span>  <span class="kw"><a href="https://rdrr.io/r/base/function.html">return</a></span><span class="op">(</span><span class="va">df</span><span class="op">)</span></span>
<span><span class="op">}</span></span>
<span></span>
<span><span class="va">list_csv</span> <span class="op">&lt;-</span> <span class="fu"><a href="https://rdrr.io/r/base/lapply.html">lapply</a></span><span class="op">(</span><span class="va">files_csv</span>, <span class="va">add_remark</span><span class="op">)</span></span>
<span></span>
<span><span class="va">df_remark</span> <span class="op">&lt;-</span> <span class="fu"><a href="https://rdrr.io/r/base/do.call.html">do.call</a></span><span class="op">(</span><span class="va">rbind</span>, <span class="va">list_csv</span><span class="op">)</span></span>
<span></span>
<span><span class="va">n</span> <span class="op">&lt;-</span> <span class="fu"><a href="https://rdrr.io/r/base/nrow.html">ncol</a></span><span class="op">(</span><span class="va">df_remark</span><span class="op">)</span></span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
</details>
</div>
<p>会在数据的添加 <code>remarks</code>，在最后一列，按照上面的代码，产生的内容是 <code>csv</code> 文件的文件名：</p>
<div class="cell">
<div class="cell-output-display">
<table class="table table-sm table-striped small">
<caption>LI-6800 数据批量导入后添加标注信息{#tbl-6800-add-remark}</caption>
<colgroup>
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 1%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
<col style="width: 0%">
</colgroup>
<thead><tr class="header">
<th style="text-align: right;">obs</th>
<th style="text-align: right;">time</th>
<th style="text-align: right;">elapsed</th>
<th style="text-align: left;">date</th>
<th style="text-align: left;">hhmmss</th>
<th style="text-align: right;">averaging</th>
<th style="text-align: right;">TIME</th>
<th style="text-align: right;">E</th>
<th style="text-align: right;">Emm</th>
<th style="text-align: right;">A</th>
<th style="text-align: right;">Ca</th>
<th style="text-align: right;">Ci</th>
<th style="text-align: right;">Pci</th>
<th style="text-align: right;">Pca</th>
<th style="text-align: right;">gsw</th>
<th style="text-align: right;">gbw</th>
<th style="text-align: right;">gtw</th>
<th style="text-align: right;">gtc</th>
<th style="text-align: right;">Rabs</th>
<th style="text-align: right;">TleafEB</th>
<th style="text-align: right;">TleafCnd</th>
<th style="text-align: right;">SVPleaf</th>
<th style="text-align: right;">RHcham</th>
<th style="text-align: right;">VPcham</th>
<th style="text-align: right;">SVPcham</th>
<th style="text-align: right;">VPDleaf</th>
<th style="text-align: right;">LatHFlux</th>
<th style="text-align: right;">SenHFlux</th>
<th style="text-align: right;">NetTherm</th>
<th style="text-align: right;">EBSum</th>
<th style="text-align: right;">Asty</th>
<th style="text-align: right;">Esty</th>
<th style="text-align: right;">Adyn</th>
<th style="text-align: right;">Crd</th>
<th style="text-align: right;">Csd</th>
<th style="text-align: right;">dCsd.dt</th>
<th style="text-align: right;">αVc</th>
<th style="text-align: right;">Edyn</th>
<th style="text-align: right;">Hr</th>
<th style="text-align: right;">Hs</th>
<th style="text-align: right;">dHs.dt</th>
<th style="text-align: right;">αVh</th>
<th style="text-align: right;">Leak</th>
<th style="text-align: right;">LeakPct</th>
<th style="text-align: right;">CorrFact</th>
<th style="text-align: right;">CorrFactPct</th>
<th style="text-align: right;">Fan</th>
<th style="text-align: left;">DarkAdaptedID</th>
<th style="text-align: left;">Qmax_d</th>
<th style="text-align: right;">Fo</th>
<th style="text-align: right;">Fm</th>
<th style="text-align: left;">Fv.Fm</th>
<th style="text-align: right;">A_dark</th>
<th style="text-align: left;">LightAdaptedID</th>
<th style="text-align: left;">Qmax</th>
<th style="text-align: right;">Fs</th>
<th style="text-align: right;">Fm.</th>
<th style="text-align: left;">PhiPS2</th>
<th style="text-align: right;">PS2.1</th>
<th style="text-align: right;">Qabs_fs</th>
<th style="text-align: right;">A_fs</th>
<th style="text-align: left;">ETR</th>
<th style="text-align: right;">PhiCO2</th>
<th style="text-align: left;">NPQ</th>
<th style="text-align: left;">alt..Fo.</th>
<th style="text-align: left;">DarkPulseID</th>
<th style="text-align: right;">Fmin</th>
<th style="text-align: left;">Fo.</th>
<th style="text-align: left;">Fv..Fm.</th>
<th style="text-align: left;">qP</th>
<th style="text-align: left;">qN</th>
<th style="text-align: left;">qP_Fo</th>
<th style="text-align: left;">qN_Fo</th>
<th style="text-align: left;">qL</th>
<th style="text-align: left;">X1.qL</th>
<th style="text-align: right;">Qin</th>
<th style="text-align: right;">Qabs</th>
<th style="text-align: right;">alpha</th>
<th style="text-align: right;">convert</th>
<th style="text-align: right;">S</th>
<th style="text-align: right;">K</th>
<th style="text-align: left;">Geometry</th>
<th style="text-align: right;">Custom</th>
<th style="text-align: right;">UseDynamic</th>
<th style="text-align: right;">TIME.1</th>
<th style="text-align: right;">CO2_s</th>
<th style="text-align: right;">CO2_r</th>
<th style="text-align: right;">H2O_s</th>
<th style="text-align: right;">H2O_r</th>
<th style="text-align: right;">CO2_a</th>
<th style="text-align: right;">H2O_a</th>
<th style="text-align: right;">Flow</th>
<th style="text-align: right;">Pa</th>
<th style="text-align: right;">ΔPcham</th>
<th style="text-align: right;">Tair</th>
<th style="text-align: right;">Tleaf</th>
<th style="text-align: right;">Tleaf2</th>
<th style="text-align: right;">Offset</th>
<th style="text-align: right;">Offset2</th>
<th style="text-align: right;">Fan_speed</th>
<th style="text-align: right;">Qamb_in</th>
<th style="text-align: right;">Qamb_out</th>
<th style="text-align: right;">Q</th>
<th style="text-align: right;">f_red</th>
<th style="text-align: right;">f_blue</th>
<th style="text-align: right;">f_farred</th>
<th style="text-align: right;">F</th>
<th style="text-align: right;">Q_modavg</th>
<th style="text-align: right;">F_dc</th>
<th style="text-align: right;">Pc</th>
<th style="text-align: right;">Tled</th>
<th style="text-align: right;">TDigital</th>
<th style="text-align: right;">TPreamp</th>
<th style="text-align: right;">TPwrSpy</th>
<th style="text-align: right;">TDrive</th>
<th style="text-align: right;">Q_red</th>
<th style="text-align: right;">Q_blue</th>
<th style="text-align: right;">Q_farred</th>
<th style="text-align: right;">TSPF</th>
<th style="text-align: right;">state</th>
<th style="text-align: right;">F_avg</th>
<th style="text-align: right;">dF.dt</th>
<th style="text-align: right;">dF_dc.dt</th>
<th style="text-align: right;">F_dc_avg</th>
<th style="text-align: right;">period</th>
<th style="text-align: right;">time.1</th>
<th style="text-align: left;">hhmmss.1</th>
<th style="text-align: right;">co2_t</th>
<th style="text-align: right;">h2o_t</th>
<th style="text-align: right;">count</th>
<th style="text-align: right;">co2_adj</th>
<th style="text-align: right;">h2o_adj</th>
<th style="text-align: right;">co2_match</th>
<th style="text-align: right;">h2o_match</th>
<th style="text-align: right;">co2_at</th>
<th style="text-align: right;">h2o_at</th>
<th style="text-align: right;">co2_cv</th>
<th style="text-align: right;">h2o_cv</th>
<th style="text-align: right;">MatchValveR</th>
<th style="text-align: right;">MatchValveS</th>
<th style="text-align: right;">MatchCO2</th>
<th style="text-align: right;">MatchH2O</th>
<th style="text-align: right;">cf_co2_a</th>
<th style="text-align: right;">cf_co2_b</th>
<th style="text-align: right;">cf_co2_c</th>
<th style="text-align: right;">cf_co2_d</th>
<th style="text-align: right;">cf_h2o_a</th>
<th style="text-align: right;">cf_h2o_b</th>
<th style="text-align: right;">cf_h2o_c</th>
<th style="text-align: right;">cf_h2o_d</th>
<th style="text-align: right;">co2_fit_low</th>
<th style="text-align: right;">co2_fit_high</th>
<th style="text-align: right;">h2o_fit_low</th>
<th style="text-align: right;">h2o_fit_high</th>
<th style="text-align: right;">co2_elapsed</th>
<th style="text-align: right;">h2o_elapsed</th>
<th style="text-align: right;">DIAG</th>
<th style="text-align: right;">Flow_s</th>
<th style="text-align: right;">Flow_r</th>
<th style="text-align: right;">Txchg</th>
<th style="text-align: right;">Tirga</th>
<th style="text-align: right;">Tchopper</th>
<th style="text-align: right;">Ts</th>
<th style="text-align: right;">Tr</th>
<th style="text-align: right;">CO2_.</th>
<th style="text-align: right;">Desiccant_.</th>
<th style="text-align: right;">Humidifier_.</th>
<th style="text-align: right;">Txchg_sp</th>
<th style="text-align: right;">CO2_r_sp</th>
<th style="text-align: right;">H2O_r_sp</th>
<th style="text-align: right;">SS_s</th>
<th style="text-align: right;">SS_r</th>
<th style="text-align: left;">remarks</th>
</tr></thead>
<tbody>
<tr class="odd">
<td style="text-align: right;">1</td>
<td style="text-align: right;">1617082892</td>
<td style="text-align: right;">0.0</td>
<td style="text-align: left;">20210330 13:41:32</td>
<td style="text-align: left;">13:41:32</td>
<td style="text-align: right;">2</td>
<td style="text-align: right;">1617082891</td>
<td style="text-align: right;">0.0011770</td>
<td style="text-align: right;">1.177006</td>
<td style="text-align: right;">-1.296405</td>
<td style="text-align: right;">21.91885</td>
<td style="text-align: right;">43.36186</td>
<td style="text-align: right;">4.386171</td>
<td style="text-align: right;">2.217152</td>
<td style="text-align: right;">0.0953076</td>
<td style="text-align: right;">2.949502</td>
<td style="text-align: right;">0.0936291</td>
<td style="text-align: right;">0.0586666</td>
<td style="text-align: right;">193.8115</td>
<td style="text-align: right;">27.66056</td>
<td style="text-align: right;">26.28095</td>
<td style="text-align: right;">3.430763</td>
<td style="text-align: right;">61.93396</td>
<td style="text-align: right;">2.194537</td>
<td style="text-align: right;">3.543350</td>
<td style="text-align: right;">1.236227</td>
<td style="text-align: right;">-51.90596</td>
<td style="text-align: right;">87.13149</td>
<td style="text-align: right;">6.346983</td>
<td style="text-align: right;">235.3840</td>
<td style="text-align: right;">-1.3088615</td>
<td style="text-align: right;">1.178213</td>
<td style="text-align: right;">-1.296405</td>
<td style="text-align: right;">20.41723</td>
<td style="text-align: right;">22.40166</td>
<td style="text-align: right;">-0.0000519</td>
<td style="text-align: right;">66.50013</td>
<td style="text-align: right;">1.177006</td>
<td style="text-align: right;">19.96748</td>
<td style="text-align: right;">21.69496</td>
<td style="text-align: right;">-5.55e-05</td>
<td style="text-align: right;">79.88</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">1</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">53510.68</td>
<td style="text-align: left;">-</td>
<td style="text-align: left;">-</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">0</td>
<td style="text-align: left;">NA</td>
<td style="text-align: right;">0</td>
<td style="text-align: left;">-</td>
<td style="text-align: left;">-</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">0</td>
<td style="text-align: left;">NA</td>
<td style="text-align: right;">0.5</td>
<td style="text-align: right;">1009.183</td>
<td style="text-align: right;">-1.296405</td>
<td style="text-align: left;">NA</td>
<td style="text-align: right;">-0.0012846</td>
<td style="text-align: left;">NA</td>
<td style="text-align: left;">NA</td>
<td style="text-align: left;">-</td>
<td style="text-align: right;">0</td>
<td style="text-align: left;">NA</td>
<td style="text-align: left;">NA</td>
<td style="text-align: left;">NA</td>
<td style="text-align: left;">NA</td>
<td style="text-align: left;">NA</td>
<td style="text-align: left;">NA</td>
<td style="text-align: left;">NA</td>
<td style="text-align: left;">NA</td>
<td style="text-align: right;">1199.995</td>
<td style="text-align: right;">1009.183</td>
<td style="text-align: right;">0.8409898</td>
<td style="text-align: right;">0.1615102</td>
<td style="text-align: right;">9</td>
<td style="text-align: right;">0.5</td>
<td style="text-align: left;">0: Broadleaf</td>
<td style="text-align: right;">2</td>
<td style="text-align: right;">1</td>
<td style="text-align: right;">1617082891</td>
<td style="text-align: right;">21.91885</td>
<td style="text-align: right;">19.99432</td>
<td style="text-align: right;">21.69527</td>
<td style="text-align: right;">19.96633</td>
<td style="text-align: right;">17.59828</td>
<td style="text-align: right;">21.71718</td>
<td style="text-align: right;">600.0092</td>
<td style="text-align: right;">101.1055</td>
<td style="text-align: right;">0.0472456</td>
<td style="text-align: right;">26.82890</td>
<td style="text-align: right;">26.28095</td>
<td style="text-align: right;">999.9</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">10003.595</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">45.29030</td>
<td style="text-align: right;">1199.995</td>
<td style="text-align: right;">0.967009</td>
<td style="text-align: right;">0.0329912</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">2.750250</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">4008.905</td>
<td style="text-align: right;">10372.25</td>
<td style="text-align: right;">40.73425</td>
<td style="text-align: right;">43.56250</td>
<td style="text-align: right;">42.42150</td>
<td style="text-align: right;">41.87475</td>
<td style="text-align: right;">40.79650</td>
<td style="text-align: right;">1160.405</td>
<td style="text-align: right;">39.59</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">1617082893</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">2.565665</td>
<td style="text-align: right;">0.4810222</td>
<td style="text-align: right;">17.091624</td>
<td style="text-align: right;">4006.983</td>
<td style="text-align: right;">15</td>
<td style="text-align: right;">1617082512</td>
<td style="text-align: left;">13:35:12</td>
<td style="text-align: right;">1617082511</td>
<td style="text-align: right;">1617082512</td>
<td style="text-align: right;">2</td>
<td style="text-align: right;">-0.012</td>
<td style="text-align: right;">-0.035</td>
<td style="text-align: right;">4.321</td>
<td style="text-align: right;">-0.022</td>
<td style="text-align: right;">400</td>
<td style="text-align: right;">20</td>
<td style="text-align: right;">0.13</td>
<td style="text-align: right;">0.05</td>
<td style="text-align: right;">100</td>
<td style="text-align: right;">100</td>
<td style="text-align: right;">4.320</td>
<td style="text-align: right;">-0.0219</td>
<td style="text-align: right;">4.32055</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">-0.02194</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">-1</td>
<td style="text-align: right;">-1</td>
<td style="text-align: right;">-1</td>
<td style="text-align: right;">-1</td>
<td style="text-align: right;">6.4</td>
<td style="text-align: right;">6.3</td>
<td style="text-align: right;">18</td>
<td style="text-align: right;">646.822</td>
<td style="text-align: right;">392.817</td>
<td style="text-align: right;">24.9992</td>
<td style="text-align: right;">27.8989</td>
<td style="text-align: right;">30.0000</td>
<td style="text-align: right;">27.9067</td>
<td style="text-align: right;">27.9480</td>
<td style="text-align: right;">3.98628</td>
<td style="text-align: right;">23.5803</td>
<td style="text-align: right;">47.208</td>
<td style="text-align: right;">25</td>
<td style="text-align: right;">23.3772</td>
<td style="text-align: right;">20</td>
<td style="text-align: right;">96.8399</td>
<td style="text-align: right;">99.4131</td>
<td style="text-align: left;">racirtest1</td>
</tr>
<tr class="even">
<td style="text-align: right;">2</td>
<td style="text-align: right;">1617082895</td>
<td style="text-align: right;">2.5</td>
<td style="text-align: left;">20210330 13:41:35</td>
<td style="text-align: left;">13:41:35</td>
<td style="text-align: right;">2</td>
<td style="text-align: right;">1617082894</td>
<td style="text-align: right;">0.0011787</td>
<td style="text-align: right;">1.178677</td>
<td style="text-align: right;">-1.313044</td>
<td style="text-align: right;">21.90930</td>
<td style="text-align: right;">43.60568</td>
<td style="text-align: right;">4.410859</td>
<td style="text-align: right;">2.216198</td>
<td style="text-align: right;">0.0954288</td>
<td style="text-align: right;">2.947543</td>
<td style="text-align: right;">0.0937450</td>
<td style="text-align: right;">0.0587395</td>
<td style="text-align: right;">193.8123</td>
<td style="text-align: right;">27.66178</td>
<td style="text-align: right;">26.28185</td>
<td style="text-align: right;">3.430946</td>
<td style="text-align: right;">61.92849</td>
<td style="text-align: right;">2.194488</td>
<td style="text-align: right;">3.543584</td>
<td style="text-align: right;">1.236458</td>
<td style="text-align: right;">-51.97964</td>
<td style="text-align: right;">87.10935</td>
<td style="text-align: right;">6.349654</td>
<td style="text-align: right;">235.2916</td>
<td style="text-align: right;">-1.3202228</td>
<td style="text-align: right;">1.179134</td>
<td style="text-align: right;">-1.313044</td>
<td style="text-align: right;">20.38174</td>
<td style="text-align: right;">22.39189</td>
<td style="text-align: right;">-0.0001096</td>
<td style="text-align: right;">66.50013</td>
<td style="text-align: right;">1.178677</td>
<td style="text-align: right;">19.96514</td>
<td style="text-align: right;">21.69502</td>
<td style="text-align: right;">-4.55e-05</td>
<td style="text-align: right;">79.88</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">1</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">53453.39</td>
<td style="text-align: left;">-</td>
<td style="text-align: left;">-</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">0</td>
<td style="text-align: left;">NA</td>
<td style="text-align: right;">0</td>
<td style="text-align: left;">-</td>
<td style="text-align: left;">-</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">0</td>
<td style="text-align: left;">NA</td>
<td style="text-align: right;">0.5</td>
<td style="text-align: right;">1009.188</td>
<td style="text-align: right;">-1.313044</td>
<td style="text-align: left;">NA</td>
<td style="text-align: right;">-0.0013011</td>
<td style="text-align: left;">NA</td>
<td style="text-align: left;">NA</td>
<td style="text-align: left;">-</td>
<td style="text-align: right;">0</td>
<td style="text-align: left;">NA</td>
<td style="text-align: left;">NA</td>
<td style="text-align: left;">NA</td>
<td style="text-align: left;">NA</td>
<td style="text-align: left;">NA</td>
<td style="text-align: left;">NA</td>
<td style="text-align: left;">NA</td>
<td style="text-align: left;">NA</td>
<td style="text-align: right;">1200.000</td>
<td style="text-align: right;">1009.188</td>
<td style="text-align: right;">0.8409898</td>
<td style="text-align: right;">0.1615102</td>
<td style="text-align: right;">9</td>
<td style="text-align: right;">0.5</td>
<td style="text-align: left;">0: Broadleaf</td>
<td style="text-align: right;">2</td>
<td style="text-align: right;">1</td>
<td style="text-align: right;">1617082894</td>
<td style="text-align: right;">21.90930</td>
<td style="text-align: right;">19.96775</td>
<td style="text-align: right;">21.69468</td>
<td style="text-align: right;">19.96438</td>
<td style="text-align: right;">17.58877</td>
<td style="text-align: right;">21.71660</td>
<td style="text-align: right;">600.0103</td>
<td style="text-align: right;">101.1068</td>
<td style="text-align: right;">0.0465612</td>
<td style="text-align: right;">26.83002</td>
<td style="text-align: right;">26.28185</td>
<td style="text-align: right;">999.9</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">9992.340</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">45.41602</td>
<td style="text-align: right;">1200.000</td>
<td style="text-align: right;">0.967009</td>
<td style="text-align: right;">0.0329912</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">2.646775</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">4009.425</td>
<td style="text-align: right;">10372.30</td>
<td style="text-align: right;">40.75000</td>
<td style="text-align: right;">43.53100</td>
<td style="text-align: right;">42.40600</td>
<td style="text-align: right;">41.87450</td>
<td style="text-align: right;">40.81200</td>
<td style="text-align: right;">1160.410</td>
<td style="text-align: right;">39.59</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">1617082895</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">2.575250</td>
<td style="text-align: right;">0.3805983</td>
<td style="text-align: right;">16.909402</td>
<td style="text-align: right;">4007.662</td>
<td style="text-align: right;">15</td>
<td style="text-align: right;">1617082512</td>
<td style="text-align: left;">13:35:12</td>
<td style="text-align: right;">1617082511</td>
<td style="text-align: right;">1617082512</td>
<td style="text-align: right;">2</td>
<td style="text-align: right;">-0.012</td>
<td style="text-align: right;">-0.035</td>
<td style="text-align: right;">4.321</td>
<td style="text-align: right;">-0.022</td>
<td style="text-align: right;">400</td>
<td style="text-align: right;">20</td>
<td style="text-align: right;">0.13</td>
<td style="text-align: right;">0.05</td>
<td style="text-align: right;">100</td>
<td style="text-align: right;">100</td>
<td style="text-align: right;">4.320</td>
<td style="text-align: right;">-0.0219</td>
<td style="text-align: right;">4.32055</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">-0.02194</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">-1</td>
<td style="text-align: right;">-1</td>
<td style="text-align: right;">-1</td>
<td style="text-align: right;">-1</td>
<td style="text-align: right;">6.4</td>
<td style="text-align: right;">6.4</td>
<td style="text-align: right;">18</td>
<td style="text-align: right;">647.002</td>
<td style="text-align: right;">392.759</td>
<td style="text-align: right;">24.9990</td>
<td style="text-align: right;">27.8989</td>
<td style="text-align: right;">30.0000</td>
<td style="text-align: right;">27.9056</td>
<td style="text-align: right;">27.9480</td>
<td style="text-align: right;">4.08099</td>
<td style="text-align: right;">23.5803</td>
<td style="text-align: right;">47.208</td>
<td style="text-align: right;">25</td>
<td style="text-align: right;">26.7963</td>
<td style="text-align: right;">20</td>
<td style="text-align: right;">96.8405</td>
<td style="text-align: right;">99.4111</td>
<td style="text-align: left;">racirtest1</td>
</tr>
<tr class="odd">
<td style="text-align: right;">3</td>
<td style="text-align: right;">1617082896</td>
<td style="text-align: right;">4.0</td>
<td style="text-align: left;">20210330 13:41:36</td>
<td style="text-align: left;">13:41:36</td>
<td style="text-align: right;">2</td>
<td style="text-align: right;">1617082895</td>
<td style="text-align: right;">0.0011796</td>
<td style="text-align: right;">1.179583</td>
<td style="text-align: right;">-1.321542</td>
<td style="text-align: right;">21.91320</td>
<td style="text-align: right;">43.73144</td>
<td style="text-align: right;">4.423538</td>
<td style="text-align: right;">2.216572</td>
<td style="text-align: right;">0.0955220</td>
<td style="text-align: right;">2.947691</td>
<td style="text-align: right;">0.0938351</td>
<td style="text-align: right;">0.0587960</td>
<td style="text-align: right;">193.8119</td>
<td style="text-align: right;">27.66123</td>
<td style="text-align: right;">26.28070</td>
<td style="text-align: right;">3.430713</td>
<td style="text-align: right;">61.92991</td>
<td style="text-align: right;">2.194503</td>
<td style="text-align: right;">3.543527</td>
<td style="text-align: right;">1.236210</td>
<td style="text-align: right;">-52.01960</td>
<td style="text-align: right;">87.25278</td>
<td style="text-align: right;">6.359744</td>
<td style="text-align: right;">235.4048</td>
<td style="text-align: right;">-1.2793724</td>
<td style="text-align: right;">1.179630</td>
<td style="text-align: right;">-1.321542</td>
<td style="text-align: right;">20.38576</td>
<td style="text-align: right;">22.40783</td>
<td style="text-align: right;">0.0001313</td>
<td style="text-align: right;">66.50013</td>
<td style="text-align: right;">1.179583</td>
<td style="text-align: right;">19.96436</td>
<td style="text-align: right;">21.69522</td>
<td style="text-align: right;">1.69e-05</td>
<td style="text-align: right;">79.88</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">1</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">53457.74</td>
<td style="text-align: left;">-</td>
<td style="text-align: left;">-</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">0</td>
<td style="text-align: left;">NA</td>
<td style="text-align: right;">0</td>
<td style="text-align: left;">-</td>
<td style="text-align: left;">-</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">0</td>
<td style="text-align: left;">NA</td>
<td style="text-align: right;">0.5</td>
<td style="text-align: right;">1009.186</td>
<td style="text-align: right;">-1.321542</td>
<td style="text-align: left;">NA</td>
<td style="text-align: right;">-0.0013095</td>
<td style="text-align: left;">NA</td>
<td style="text-align: left;">NA</td>
<td style="text-align: left;">-</td>
<td style="text-align: right;">0</td>
<td style="text-align: left;">NA</td>
<td style="text-align: left;">NA</td>
<td style="text-align: left;">NA</td>
<td style="text-align: left;">NA</td>
<td style="text-align: left;">NA</td>
<td style="text-align: left;">NA</td>
<td style="text-align: left;">NA</td>
<td style="text-align: left;">NA</td>
<td style="text-align: right;">1199.997</td>
<td style="text-align: right;">1009.186</td>
<td style="text-align: right;">0.8409898</td>
<td style="text-align: right;">0.1615102</td>
<td style="text-align: right;">9</td>
<td style="text-align: right;">0.5</td>
<td style="text-align: left;">0: Broadleaf</td>
<td style="text-align: right;">2</td>
<td style="text-align: right;">1</td>
<td style="text-align: right;">1617082895</td>
<td style="text-align: right;">21.91320</td>
<td style="text-align: right;">20.03295</td>
<td style="text-align: right;">21.69503</td>
<td style="text-align: right;">19.96400</td>
<td style="text-align: right;">17.59267</td>
<td style="text-align: right;">21.71698</td>
<td style="text-align: right;">600.0110</td>
<td style="text-align: right;">101.1058</td>
<td style="text-align: right;">0.0466098</td>
<td style="text-align: right;">26.82975</td>
<td style="text-align: right;">26.28070</td>
<td style="text-align: right;">999.9</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">9993.280</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">45.47442</td>
<td style="text-align: right;">1199.997</td>
<td style="text-align: right;">0.967009</td>
<td style="text-align: right;">0.0329912</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">2.729575</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">4009.827</td>
<td style="text-align: right;">10372.27</td>
<td style="text-align: right;">40.73425</td>
<td style="text-align: right;">43.56225</td>
<td style="text-align: right;">42.39050</td>
<td style="text-align: right;">41.87475</td>
<td style="text-align: right;">40.79650</td>
<td style="text-align: right;">1160.408</td>
<td style="text-align: right;">39.59</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">1617082897</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">2.576960</td>
<td style="text-align: right;">0.7380154</td>
<td style="text-align: right;">16.976923</td>
<td style="text-align: right;">4008.236</td>
<td style="text-align: right;">15</td>
<td style="text-align: right;">1617082512</td>
<td style="text-align: left;">13:35:12</td>
<td style="text-align: right;">1617082511</td>
<td style="text-align: right;">1617082512</td>
<td style="text-align: right;">2</td>
<td style="text-align: right;">-0.012</td>
<td style="text-align: right;">-0.035</td>
<td style="text-align: right;">4.321</td>
<td style="text-align: right;">-0.022</td>
<td style="text-align: right;">400</td>
<td style="text-align: right;">20</td>
<td style="text-align: right;">0.13</td>
<td style="text-align: right;">0.05</td>
<td style="text-align: right;">100</td>
<td style="text-align: right;">100</td>
<td style="text-align: right;">4.321</td>
<td style="text-align: right;">-0.0219</td>
<td style="text-align: right;">4.32055</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">-0.02194</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">-1</td>
<td style="text-align: right;">-1</td>
<td style="text-align: right;">-1</td>
<td style="text-align: right;">-1</td>
<td style="text-align: right;">6.4</td>
<td style="text-align: right;">6.4</td>
<td style="text-align: right;">18</td>
<td style="text-align: right;">646.866</td>
<td style="text-align: right;">392.795</td>
<td style="text-align: right;">24.9990</td>
<td style="text-align: right;">27.8989</td>
<td style="text-align: right;">30.0000</td>
<td style="text-align: right;">27.9056</td>
<td style="text-align: right;">27.9471</td>
<td style="text-align: right;">4.17522</td>
<td style="text-align: right;">23.5803</td>
<td style="text-align: right;">47.208</td>
<td style="text-align: right;">25</td>
<td style="text-align: right;">26.7963</td>
<td style="text-align: right;">20</td>
<td style="text-align: right;">96.8409</td>
<td style="text-align: right;">99.4112</td>
<td style="text-align: left;">racirtest1</td>
</tr>
<tr class="even">
<td style="text-align: right;">4</td>
<td style="text-align: right;">1617082899</td>
<td style="text-align: right;">6.5</td>
<td style="text-align: left;">20210330 13:41:39</td>
<td style="text-align: left;">13:41:39</td>
<td style="text-align: right;">2</td>
<td style="text-align: right;">1617082898</td>
<td style="text-align: right;">0.0011813</td>
<td style="text-align: right;">1.181340</td>
<td style="text-align: right;">-1.280420</td>
<td style="text-align: right;">21.99530</td>
<td style="text-align: right;">43.07574</td>
<td style="text-align: right;">4.357142</td>
<td style="text-align: right;">2.224840</td>
<td style="text-align: right;">0.0957200</td>
<td style="text-align: right;">2.948978</td>
<td style="text-align: right;">0.0940269</td>
<td style="text-align: right;">0.0589164</td>
<td style="text-align: right;">193.8135</td>
<td style="text-align: right;">27.65659</td>
<td style="text-align: right;">26.27753</td>
<td style="text-align: right;">3.430070</td>
<td style="text-align: right;">61.94557</td>
<td style="text-align: right;">2.194561</td>
<td style="text-align: right;">3.542725</td>
<td style="text-align: right;">1.235509</td>
<td style="text-align: right;">-52.09708</td>
<td style="text-align: right;">87.18356</td>
<td style="text-align: right;">6.351701</td>
<td style="text-align: right;">235.2516</td>
<td style="text-align: right;">-0.7424130</td>
<td style="text-align: right;">1.181656</td>
<td style="text-align: right;">-1.280420</td>
<td style="text-align: right;">20.90404</td>
<td style="text-align: right;">22.55299</td>
<td style="text-align: right;">0.0691623</td>
<td style="text-align: right;">66.50013</td>
<td style="text-align: right;">1.181340</td>
<td style="text-align: right;">19.96294</td>
<td style="text-align: right;">21.69646</td>
<td style="text-align: right;">-2.70e-06</td>
<td style="text-align: right;">79.88</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">1</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">53495.89</td>
<td style="text-align: left;">-</td>
<td style="text-align: left;">-</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">0</td>
<td style="text-align: left;">NA</td>
<td style="text-align: right;">0</td>
<td style="text-align: left;">-</td>
<td style="text-align: left;">-</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">0</td>
<td style="text-align: left;">NA</td>
<td style="text-align: right;">0.5</td>
<td style="text-align: right;">1009.194</td>
<td style="text-align: right;">-1.280420</td>
<td style="text-align: left;">NA</td>
<td style="text-align: right;">-0.0012688</td>
<td style="text-align: left;">NA</td>
<td style="text-align: left;">NA</td>
<td style="text-align: left;">-</td>
<td style="text-align: right;">0</td>
<td style="text-align: left;">NA</td>
<td style="text-align: left;">NA</td>
<td style="text-align: left;">NA</td>
<td style="text-align: left;">NA</td>
<td style="text-align: left;">NA</td>
<td style="text-align: left;">NA</td>
<td style="text-align: left;">NA</td>
<td style="text-align: left;">NA</td>
<td style="text-align: right;">1200.007</td>
<td style="text-align: right;">1009.194</td>
<td style="text-align: right;">0.8409897</td>
<td style="text-align: right;">0.1615102</td>
<td style="text-align: right;">9</td>
<td style="text-align: right;">0.5</td>
<td style="text-align: left;">0: Broadleaf</td>
<td style="text-align: right;">2</td>
<td style="text-align: right;">1</td>
<td style="text-align: right;">1617082898</td>
<td style="text-align: right;">21.99530</td>
<td style="text-align: right;">20.92070</td>
<td style="text-align: right;">21.69595</td>
<td style="text-align: right;">19.96197</td>
<td style="text-align: right;">17.67475</td>
<td style="text-align: right;">21.71790</td>
<td style="text-align: right;">600.0185</td>
<td style="text-align: right;">101.1040</td>
<td style="text-align: right;">0.0467119</td>
<td style="text-align: right;">26.82590</td>
<td style="text-align: right;">26.27753</td>
<td style="text-align: right;">999.9</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">10000.763</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">45.54863</td>
<td style="text-align: right;">1200.007</td>
<td style="text-align: right;">0.967009</td>
<td style="text-align: right;">0.0329912</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">2.628825</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">4009.780</td>
<td style="text-align: right;">10372.38</td>
<td style="text-align: right;">40.74950</td>
<td style="text-align: right;">43.59350</td>
<td style="text-align: right;">42.40600</td>
<td style="text-align: right;">41.96850</td>
<td style="text-align: right;">40.81200</td>
<td style="text-align: right;">1160.418</td>
<td style="text-align: right;">39.59</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">1617082900</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">2.605660</td>
<td style="text-align: right;">0.9306615</td>
<td style="text-align: right;">13.372308</td>
<td style="text-align: right;">4008.739</td>
<td style="text-align: right;">15</td>
<td style="text-align: right;">1617082512</td>
<td style="text-align: left;">13:35:12</td>
<td style="text-align: right;">1617082511</td>
<td style="text-align: right;">1617082512</td>
<td style="text-align: right;">2</td>
<td style="text-align: right;">-0.012</td>
<td style="text-align: right;">-0.035</td>
<td style="text-align: right;">4.321</td>
<td style="text-align: right;">-0.022</td>
<td style="text-align: right;">400</td>
<td style="text-align: right;">20</td>
<td style="text-align: right;">0.13</td>
<td style="text-align: right;">0.05</td>
<td style="text-align: right;">100</td>
<td style="text-align: right;">100</td>
<td style="text-align: right;">4.320</td>
<td style="text-align: right;">-0.0219</td>
<td style="text-align: right;">4.32055</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">-0.02194</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">-1</td>
<td style="text-align: right;">-1</td>
<td style="text-align: right;">-1</td>
<td style="text-align: right;">-1</td>
<td style="text-align: right;">6.5</td>
<td style="text-align: right;">6.5</td>
<td style="text-align: right;">18</td>
<td style="text-align: right;">646.672</td>
<td style="text-align: right;">392.887</td>
<td style="text-align: right;">24.9989</td>
<td style="text-align: right;">27.8981</td>
<td style="text-align: right;">30.0000</td>
<td style="text-align: right;">27.9056</td>
<td style="text-align: right;">27.9457</td>
<td style="text-align: right;">4.38255</td>
<td style="text-align: right;">23.5803</td>
<td style="text-align: right;">47.208</td>
<td style="text-align: right;">25</td>
<td style="text-align: right;">33.5145</td>
<td style="text-align: right;">20</td>
<td style="text-align: right;">96.8411</td>
<td style="text-align: right;">99.4125</td>
<td style="text-align: left;">racirtest1</td>
</tr>
<tr class="odd">
<td style="text-align: right;">5</td>
<td style="text-align: right;">1617082900</td>
<td style="text-align: right;">8.0</td>
<td style="text-align: left;">20210330 13:41:40</td>
<td style="text-align: left;">13:41:40</td>
<td style="text-align: right;">2</td>
<td style="text-align: right;">1617082899</td>
<td style="text-align: right;">0.0011824</td>
<td style="text-align: right;">1.182408</td>
<td style="text-align: right;">-1.283279</td>
<td style="text-align: right;">22.19683</td>
<td style="text-align: right;">43.29043</td>
<td style="text-align: right;">4.378882</td>
<td style="text-align: right;">2.245237</td>
<td style="text-align: right;">0.0958617</td>
<td style="text-align: right;">2.947640</td>
<td style="text-align: right;">0.0941628</td>
<td style="text-align: right;">0.0590019</td>
<td style="text-align: right;">193.8127</td>
<td style="text-align: right;">27.65527</td>
<td style="text-align: right;">26.27460</td>
<td style="text-align: right;">3.429477</td>
<td style="text-align: right;">61.95251</td>
<td style="text-align: right;">2.194626</td>
<td style="text-align: right;">3.542433</td>
<td style="text-align: right;">1.234851</td>
<td style="text-align: right;">-52.14418</td>
<td style="text-align: right;">87.38634</td>
<td style="text-align: right;">6.369227</td>
<td style="text-align: right;">235.4241</td>
<td style="text-align: right;">-0.1925011</td>
<td style="text-align: right;">1.182614</td>
<td style="text-align: right;">-1.283279</td>
<td style="text-align: right;">21.85036</td>
<td style="text-align: right;">22.91441</td>
<td style="text-align: right;">0.2003223</td>
<td style="text-align: right;">66.50013</td>
<td style="text-align: right;">1.182408</td>
<td style="text-align: right;">19.96182</td>
<td style="text-align: right;">21.69676</td>
<td style="text-align: right;">3.49e-05</td>
<td style="text-align: right;">79.88</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">1</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">53457.15</td>
<td style="text-align: left;">-</td>
<td style="text-align: left;">-</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">0</td>
<td style="text-align: left;">NA</td>
<td style="text-align: right;">0</td>
<td style="text-align: left;">-</td>
<td style="text-align: left;">-</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">0</td>
<td style="text-align: left;">NA</td>
<td style="text-align: right;">0.5</td>
<td style="text-align: right;">1009.190</td>
<td style="text-align: right;">-1.283279</td>
<td style="text-align: left;">NA</td>
<td style="text-align: right;">-0.0012716</td>
<td style="text-align: left;">NA</td>
<td style="text-align: left;">NA</td>
<td style="text-align: left;">-</td>
<td style="text-align: right;">0</td>
<td style="text-align: left;">NA</td>
<td style="text-align: left;">NA</td>
<td style="text-align: left;">NA</td>
<td style="text-align: left;">NA</td>
<td style="text-align: left;">NA</td>
<td style="text-align: left;">NA</td>
<td style="text-align: left;">NA</td>
<td style="text-align: left;">NA</td>
<td style="text-align: right;">1200.003</td>
<td style="text-align: right;">1009.190</td>
<td style="text-align: right;">0.8409897</td>
<td style="text-align: right;">0.1615102</td>
<td style="text-align: right;">9</td>
<td style="text-align: right;">0.5</td>
<td style="text-align: left;">0: Broadleaf</td>
<td style="text-align: right;">2</td>
<td style="text-align: right;">1</td>
<td style="text-align: right;">1617082899</td>
<td style="text-align: right;">22.19683</td>
<td style="text-align: right;">21.94745</td>
<td style="text-align: right;">21.69647</td>
<td style="text-align: right;">19.96105</td>
<td style="text-align: right;">17.87627</td>
<td style="text-align: right;">21.71840</td>
<td style="text-align: right;">600.0030</td>
<td style="text-align: right;">101.1045</td>
<td style="text-align: right;">0.0467717</td>
<td style="text-align: right;">26.82450</td>
<td style="text-align: right;">26.27460</td>
<td style="text-align: right;">999.9</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">9993.112</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">45.56580</td>
<td style="text-align: right;">1200.003</td>
<td style="text-align: right;">0.967009</td>
<td style="text-align: right;">0.0329912</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">2.624775</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">4009.068</td>
<td style="text-align: right;">10372.33</td>
<td style="text-align: right;">40.71850</td>
<td style="text-align: right;">43.64025</td>
<td style="text-align: right;">42.40600</td>
<td style="text-align: right;">41.98400</td>
<td style="text-align: right;">40.79650</td>
<td style="text-align: right;">1160.412</td>
<td style="text-align: right;">39.59</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">1617082901</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">2.623516</td>
<td style="text-align: right;">0.1101154</td>
<td style="text-align: right;">9.382308</td>
<td style="text-align: right;">4008.880</td>
<td style="text-align: right;">15</td>
<td style="text-align: right;">1617082512</td>
<td style="text-align: left;">13:35:12</td>
<td style="text-align: right;">1617082511</td>
<td style="text-align: right;">1617082512</td>
<td style="text-align: right;">2</td>
<td style="text-align: right;">-0.012</td>
<td style="text-align: right;">-0.035</td>
<td style="text-align: right;">4.321</td>
<td style="text-align: right;">-0.022</td>
<td style="text-align: right;">400</td>
<td style="text-align: right;">20</td>
<td style="text-align: right;">0.13</td>
<td style="text-align: right;">0.05</td>
<td style="text-align: right;">100</td>
<td style="text-align: right;">100</td>
<td style="text-align: right;">4.320</td>
<td style="text-align: right;">-0.0219</td>
<td style="text-align: right;">4.32055</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">-0.02194</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">-1</td>
<td style="text-align: right;">-1</td>
<td style="text-align: right;">-1</td>
<td style="text-align: right;">-1</td>
<td style="text-align: right;">6.5</td>
<td style="text-align: right;">6.5</td>
<td style="text-align: right;">18</td>
<td style="text-align: right;">646.846</td>
<td style="text-align: right;">392.828</td>
<td style="text-align: right;">24.9988</td>
<td style="text-align: right;">27.8972</td>
<td style="text-align: right;">29.9999</td>
<td style="text-align: right;">27.9056</td>
<td style="text-align: right;">27.9457</td>
<td style="text-align: right;">4.46969</td>
<td style="text-align: right;">23.5803</td>
<td style="text-align: right;">47.208</td>
<td style="text-align: right;">25</td>
<td style="text-align: right;">33.5145</td>
<td style="text-align: right;">20</td>
<td style="text-align: right;">96.8413</td>
<td style="text-align: right;">99.4125</td>
<td style="text-align: left;">racirtest1</td>
</tr>
<tr class="even">
<td style="text-align: right;">6</td>
<td style="text-align: right;">1617082902</td>
<td style="text-align: right;">10.0</td>
<td style="text-align: left;">20210330 13:41:42</td>
<td style="text-align: left;">13:41:42</td>
<td style="text-align: right;">2</td>
<td style="text-align: right;">1617082902</td>
<td style="text-align: right;">0.0011830</td>
<td style="text-align: right;">1.183029</td>
<td style="text-align: right;">-1.302558</td>
<td style="text-align: right;">23.10023</td>
<td style="text-align: right;">44.45623</td>
<td style="text-align: right;">4.496921</td>
<td style="text-align: right;">2.336679</td>
<td style="text-align: right;">0.0960590</td>
<td style="text-align: right;">2.947577</td>
<td style="text-align: right;">0.0943531</td>
<td style="text-align: right;">0.0591215</td>
<td style="text-align: right;">193.8133</td>
<td style="text-align: right;">27.65226</td>
<td style="text-align: right;">26.26610</td>
<td style="text-align: right;">3.427756</td>
<td style="text-align: right;">61.96520</td>
<td style="text-align: right;">2.194706</td>
<td style="text-align: right;">3.541836</td>
<td style="text-align: right;">1.233051</td>
<td style="text-align: right;">-52.17157</td>
<td style="text-align: right;">88.27968</td>
<td style="text-align: right;">6.434109</td>
<td style="text-align: right;">236.3555</td>
<td style="text-align: right;">1.1688374</td>
<td style="text-align: right;">1.183105</td>
<td style="text-align: right;">-1.302558</td>
<td style="text-align: right;">23.99017</td>
<td style="text-align: right;">23.88864</td>
<td style="text-align: right;">0.4662872</td>
<td style="text-align: right;">66.50013</td>
<td style="text-align: right;">1.183029</td>
<td style="text-align: right;">19.96064</td>
<td style="text-align: right;">21.69664</td>
<td style="text-align: right;">1.80e-05</td>
<td style="text-align: right;">79.88</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">1</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">53455.89</td>
<td style="text-align: left;">-</td>
<td style="text-align: left;">-</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">0</td>
<td style="text-align: left;">NA</td>
<td style="text-align: right;">0</td>
<td style="text-align: left;">-</td>
<td style="text-align: left;">-</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">0</td>
<td style="text-align: left;">NA</td>
<td style="text-align: right;">0.5</td>
<td style="text-align: right;">1009.193</td>
<td style="text-align: right;">-1.302558</td>
<td style="text-align: left;">NA</td>
<td style="text-align: right;">-0.0012907</td>
<td style="text-align: left;">NA</td>
<td style="text-align: left;">NA</td>
<td style="text-align: left;">-</td>
<td style="text-align: right;">0</td>
<td style="text-align: left;">NA</td>
<td style="text-align: left;">NA</td>
<td style="text-align: left;">NA</td>
<td style="text-align: left;">NA</td>
<td style="text-align: left;">NA</td>
<td style="text-align: left;">NA</td>
<td style="text-align: left;">NA</td>
<td style="text-align: left;">NA</td>
<td style="text-align: right;">1200.007</td>
<td style="text-align: right;">1009.193</td>
<td style="text-align: right;">0.8409897</td>
<td style="text-align: right;">0.1615102</td>
<td style="text-align: right;">9</td>
<td style="text-align: right;">0.5</td>
<td style="text-align: left;">0: Broadleaf</td>
<td style="text-align: right;">2</td>
<td style="text-align: right;">1</td>
<td style="text-align: right;">1617082902</td>
<td style="text-align: right;">23.10023</td>
<td style="text-align: right;">24.89453</td>
<td style="text-align: right;">21.69670</td>
<td style="text-align: right;">19.96050</td>
<td style="text-align: right;">18.77970</td>
<td style="text-align: right;">21.71863</td>
<td style="text-align: right;">599.9837</td>
<td style="text-align: right;">101.1070</td>
<td style="text-align: right;">0.0468953</td>
<td style="text-align: right;">26.82163</td>
<td style="text-align: right;">26.26610</td>
<td style="text-align: right;">999.9</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">9992.510</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">45.60887</td>
<td style="text-align: right;">1200.007</td>
<td style="text-align: right;">0.967009</td>
<td style="text-align: right;">0.0329912</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">2.594067</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">4006.967</td>
<td style="text-align: right;">10372.37</td>
<td style="text-align: right;">40.75000</td>
<td style="text-align: right;">43.54167</td>
<td style="text-align: right;">42.39567</td>
<td style="text-align: right;">41.79133</td>
<td style="text-align: right;">40.79133</td>
<td style="text-align: right;">1160.417</td>
<td style="text-align: right;">39.59</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">1617082903</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">2.620524</td>
<td style="text-align: right;">0.0663154</td>
<td style="text-align: right;">-4.953846</td>
<td style="text-align: right;">4008.747</td>
<td style="text-align: right;">15</td>
<td style="text-align: right;">1617082512</td>
<td style="text-align: left;">13:35:12</td>
<td style="text-align: right;">1617082511</td>
<td style="text-align: right;">1617082512</td>
<td style="text-align: right;">2</td>
<td style="text-align: right;">-0.012</td>
<td style="text-align: right;">-0.035</td>
<td style="text-align: right;">4.321</td>
<td style="text-align: right;">-0.022</td>
<td style="text-align: right;">400</td>
<td style="text-align: right;">20</td>
<td style="text-align: right;">0.13</td>
<td style="text-align: right;">0.05</td>
<td style="text-align: right;">100</td>
<td style="text-align: right;">100</td>
<td style="text-align: right;">4.320</td>
<td style="text-align: right;">-0.0219</td>
<td style="text-align: right;">4.32055</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">-0.02194</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">-1</td>
<td style="text-align: right;">-1</td>
<td style="text-align: right;">-1</td>
<td style="text-align: right;">-1</td>
<td style="text-align: right;">6.5</td>
<td style="text-align: right;">6.5</td>
<td style="text-align: right;">18</td>
<td style="text-align: right;">646.938</td>
<td style="text-align: right;">392.756</td>
<td style="text-align: right;">24.9988</td>
<td style="text-align: right;">27.8965</td>
<td style="text-align: right;">30.0000</td>
<td style="text-align: right;">27.9051</td>
<td style="text-align: right;">27.9457</td>
<td style="text-align: right;">4.62190</td>
<td style="text-align: right;">23.5803</td>
<td style="text-align: right;">47.208</td>
<td style="text-align: right;">25</td>
<td style="text-align: right;">36.8578</td>
<td style="text-align: right;">20</td>
<td style="text-align: right;">96.8411</td>
<td style="text-align: right;">99.4118</td>
<td style="text-align: left;">racirtest1</td>
</tr>
</tbody>
</table>
</div>
</div>
<p>到此为止已经整理为所谓的 <code>tidy data</code> 了，用 <code>tidyverse</code> 也好，用 <code>base</code> 语法也好，总之是比较容易处理的数据了，例如上面其实是 <code>RACiR</code> 数据了，有两个，那么当然可以使用 <code><a href="https://rdrr.io/pkg/plantecophys/man/fitacis.html">plantecophys::fitacis</a></code> 来一条命令搞定所有数据的拟合了。</p>
<p>这里需要注意的是使用 <code>xlconnect_read</code> 也可以使用类似的操作，但我觉得不如这种方法省事，故而只列出来这一种，有需要的也可以按照类似方法处理即可。</p>


</section></section></main><!-- /main --><script id="quarto-html-after-body" type="application/javascript">
window.document.addEventListener("DOMContentLoaded", function (event) {
  const toggleBodyColorMode = (bsSheetEl) => {
    const mode = bsSheetEl.getAttribute("data-mode");
    const bodyEl = window.document.querySelector("body");
    if (mode === "dark") {
      bodyEl.classList.add("quarto-dark");
      bodyEl.classList.remove("quarto-light");
    } else {
      bodyEl.classList.add("quarto-light");
      bodyEl.classList.remove("quarto-dark");
    }
  }
  const toggleBodyColorPrimary = () => {
    const bsSheetEl = window.document.querySelector("link#quarto-bootstrap");
    if (bsSheetEl) {
      toggleBodyColorMode(bsSheetEl);
    }
  }
  toggleBodyColorPrimary();  
  const icon = "";
  const anchorJS = new window.AnchorJS();
  anchorJS.options = {
    placement: 'right',
    icon: icon
  };
  anchorJS.add('.anchored');
  const isCodeAnnotation = (el) => {
    for (const clz of el.classList) {
      if (clz.startsWith('code-annotation-')) {                     
        return true;
      }
    }
    return false;
  }
  const clipboard = new window.ClipboardJS('.code-copy-button', {
    text: function(trigger) {
      const codeEl = trigger.previousElementSibling.cloneNode(true);
      for (const childEl of codeEl.children) {
        if (isCodeAnnotation(childEl)) {
          childEl.remove();
        }
      }
      return codeEl.innerText;
    }
  });
  clipboard.on('success', function(e) {
    // button target
    const button = e.trigger;
    // don't keep focus
    button.blur();
    // flash "checked"
    button.classList.add('code-copy-button-checked');
    var currentTitle = button.getAttribute("title");
    button.setAttribute("title", "已复制");
    let tooltip;
    if (window.bootstrap) {
      button.setAttribute("data-bs-toggle", "tooltip");
      button.setAttribute("data-bs-placement", "left");
      button.setAttribute("data-bs-title", "已复制");
      tooltip = new bootstrap.Tooltip(button, 
        { trigger: "manual", 
          customClass: "code-copy-button-tooltip",
          offset: [0, -8]});
      tooltip.show();    
    }
    setTimeout(function() {
      if (tooltip) {
        tooltip.hide();
        button.removeAttribute("data-bs-title");
        button.removeAttribute("data-bs-toggle");
        button.removeAttribute("data-bs-placement");
      }
      button.setAttribute("title", currentTitle);
      button.classList.remove('code-copy-button-checked');
    }, 1000);
    // clear code selection
    e.clearSelection();
  });
    var localhostRegex = new RegExp(/^(?:http|https):\/\/localhost\:?[0-9]*\//);
    var mailtoRegex = new RegExp(/^mailto:/);
      var filterRegex = new RegExp("https:\/\/zhujiedong\.github\.io\/photosynthesis-analysis\/");
    var isInternal = (href) => {
        return filterRegex.test(href) || localhostRegex.test(href) || mailtoRegex.test(href);
    }
    // Inspect non-navigation links and adorn them if external
 	var links = window.document.querySelectorAll('a[href]:not(.nav-link):not(.navbar-brand):not(.toc-action):not(.sidebar-link):not(.sidebar-item-toggle):not(.pagination-link):not(.no-external):not([aria-hidden]):not(.dropdown-item):not(.quarto-navigation-tool)');
    for (var i=0; i<links.length; i++) {
      const link = links[i];
      if (!isInternal(link.href)) {
        // undo the damage that might have been done by quarto-nav.js in the case of
        // links that we want to consider external
        if (link.dataset.originalHref !== undefined) {
          link.href = link.dataset.originalHref;
        }
      }
    }
  function tippyHover(el, contentFn, onTriggerFn, onUntriggerFn) {
    const config = {
      allowHTML: true,
      maxWidth: 500,
      delay: 100,
      arrow: false,
      appendTo: function(el) {
          return el.parentElement;
      },
      interactive: true,
      interactiveBorder: 10,
      theme: 'quarto',
      placement: 'bottom-start',
    };
    if (contentFn) {
      config.content = contentFn;
    }
    if (onTriggerFn) {
      config.onTrigger = onTriggerFn;
    }
    if (onUntriggerFn) {
      config.onUntrigger = onUntriggerFn;
    }
    window.tippy(el, config); 
  }
  const noterefs = window.document.querySelectorAll('a[role="doc-noteref"]');
  for (var i=0; i<noterefs.length; i++) {
    const ref = noterefs[i];
    tippyHover(ref, function() {
      // use id or data attribute instead here
      let href = ref.getAttribute('data-footnote-href') || ref.getAttribute('href');
      try { href = new URL(href).hash; } catch {}
      const id = href.replace(/^#\/?/, "");
      const note = window.document.getElementById(id);
      if (note) {
        return note.innerHTML;
      } else {
        return "";
      }
    });
  }
  const xrefs = window.document.querySelectorAll('a.quarto-xref');
  const processXRef = (id, note) => {
    // Strip column container classes
    const stripColumnClz = (el) => {
      el.classList.remove("page-full", "page-columns");
      if (el.children) {
        for (const child of el.children) {
          stripColumnClz(child);
        }
      }
    }
    stripColumnClz(note)
    if (id === null || id.startsWith('sec-')) {
      // Special case sections, only their first couple elements
      const container = document.createElement("div");
      if (note.children && note.children.length > 2) {
        container.appendChild(note.children[0].cloneNode(true));
        for (let i = 1; i < note.children.length; i++) {
          const child = note.children[i];
          if (child.tagName === "P" && child.innerText === "") {
            continue;
          } else {
            container.appendChild(child.cloneNode(true));
            break;
          }
        }
        if (window.Quarto?.typesetMath) {
          window.Quarto.typesetMath(container);
        }
        return container.innerHTML
      } else {
        if (window.Quarto?.typesetMath) {
          window.Quarto.typesetMath(note);
        }
        return note.innerHTML;
      }
    } else {
      // Remove any anchor links if they are present
      const anchorLink = note.querySelector('a.anchorjs-link');
      if (anchorLink) {
        anchorLink.remove();
      }
      if (window.Quarto?.typesetMath) {
        window.Quarto.typesetMath(note);
      }
      // TODO in 1.5, we should make sure this works without a callout special case
      if (note.classList.contains("callout")) {
        return note.outerHTML;
      } else {
        return note.innerHTML;
      }
    }
  }
  for (var i=0; i<xrefs.length; i++) {
    const xref = xrefs[i];
    tippyHover(xref, undefined, function(instance) {
      instance.disable();
      let url = xref.getAttribute('href');
      let hash = undefined; 
      if (url.startsWith('#')) {
        hash = url;
      } else {
        try { hash = new URL(url).hash; } catch {}
      }
      if (hash) {
        const id = hash.replace(/^#\/?/, "");
        const note = window.document.getElementById(id);
        if (note !== null) {
          try {
            const html = processXRef(id, note.cloneNode(true));
            instance.setContent(html);
          } finally {
            instance.enable();
            instance.show();
          }
        } else {
          // See if we can fetch this
          fetch(url.split('#')[0])
          .then(res => res.text())
          .then(html => {
            const parser = new DOMParser();
            const htmlDoc = parser.parseFromString(html, "text/html");
            const note = htmlDoc.getElementById(id);
            if (note !== null) {
              const html = processXRef(id, note);
              instance.setContent(html);
            } 
          }).finally(() => {
            instance.enable();
            instance.show();
          });
        }
      } else {
        // See if we can fetch a full url (with no hash to target)
        // This is a special case and we should probably do some content thinning / targeting
        fetch(url)
        .then(res => res.text())
        .then(html => {
          const parser = new DOMParser();
          const htmlDoc = parser.parseFromString(html, "text/html");
          const note = htmlDoc.querySelector('main.content');
          if (note !== null) {
            // This should only happen for chapter cross references
            // (since there is no id in the URL)
            // remove the first header
            if (note.children.length > 0 && note.children[0].tagName === "HEADER") {
              note.children[0].remove();
            }
            const html = processXRef(null, note);
            instance.setContent(html);
          } 
        }).finally(() => {
          instance.enable();
          instance.show();
        });
      }
    }, function(instance) {
    });
  }
      let selectedAnnoteEl;
      const selectorForAnnotation = ( cell, annotation) => {
        let cellAttr = 'data-code-cell="' + cell + '"';
        let lineAttr = 'data-code-annotation="' +  annotation + '"';
        const selector = 'span[' + cellAttr + '][' + lineAttr + ']';
        return selector;
      }
      const selectCodeLines = (annoteEl) => {
        const doc = window.document;
        const targetCell = annoteEl.getAttribute("data-target-cell");
        const targetAnnotation = annoteEl.getAttribute("data-target-annotation");
        const annoteSpan = window.document.querySelector(selectorForAnnotation(targetCell, targetAnnotation));
        const lines = annoteSpan.getAttribute("data-code-lines").split(",");
        const lineIds = lines.map((line) => {
          return targetCell + "-" + line;
        })
        let top = null;
        let height = null;
        let parent = null;
        if (lineIds.length > 0) {
            //compute the position of the single el (top and bottom and make a div)
            const el = window.document.getElementById(lineIds[0]);
            top = el.offsetTop;
            height = el.offsetHeight;
            parent = el.parentElement.parentElement;
          if (lineIds.length > 1) {
            const lastEl = window.document.getElementById(lineIds[lineIds.length - 1]);
            const bottom = lastEl.offsetTop + lastEl.offsetHeight;
            height = bottom - top;
          }
          if (top !== null && height !== null && parent !== null) {
            // cook up a div (if necessary) and position it 
            let div = window.document.getElementById("code-annotation-line-highlight");
            if (div === null) {
              div = window.document.createElement("div");
              div.setAttribute("id", "code-annotation-line-highlight");
              div.style.position = 'absolute';
              parent.appendChild(div);
            }
            div.style.top = top - 2 + "px";
            div.style.height = height + 4 + "px";
            div.style.left = 0;
            let gutterDiv = window.document.getElementById("code-annotation-line-highlight-gutter");
            if (gutterDiv === null) {
              gutterDiv = window.document.createElement("div");
              gutterDiv.setAttribute("id", "code-annotation-line-highlight-gutter");
              gutterDiv.style.position = 'absolute';
              const codeCell = window.document.getElementById(targetCell);
              const gutter = codeCell.querySelector('.code-annotation-gutter');
              gutter.appendChild(gutterDiv);
            }
            gutterDiv.style.top = top - 2 + "px";
            gutterDiv.style.height = height + 4 + "px";
          }
          selectedAnnoteEl = annoteEl;
        }
      };
      const unselectCodeLines = () => {
        const elementsIds = ["code-annotation-line-highlight", "code-annotation-line-highlight-gutter"];
        elementsIds.forEach((elId) => {
          const div = window.document.getElementById(elId);
          if (div) {
            div.remove();
          }
        });
        selectedAnnoteEl = undefined;
      };
        // Handle positioning of the toggle
    window.addEventListener(
      "resize",
      throttle(() => {
        elRect = undefined;
        if (selectedAnnoteEl) {
          selectCodeLines(selectedAnnoteEl);
        }
      }, 10)
    );
    function throttle(fn, ms) {
    let throttle = false;
    let timer;
      return (...args) => {
        if(!throttle) { // first call gets through
            fn.apply(this, args);
            throttle = true;
        } else { // all the others get throttled
            if(timer) clearTimeout(timer); // cancel #2
            timer = setTimeout(() => {
              fn.apply(this, args);
              timer = throttle = false;
            }, ms);
        }
      };
    }
      // Attach click handler to the DT
      const annoteDls = window.document.querySelectorAll('dt[data-target-cell]');
      for (const annoteDlNode of annoteDls) {
        annoteDlNode.addEventListener('click', (event) => {
          const clickedEl = event.target;
          if (clickedEl !== selectedAnnoteEl) {
            unselectCodeLines();
            const activeEl = window.document.querySelector('dt[data-target-cell].code-annotation-active');
            if (activeEl) {
              activeEl.classList.remove('code-annotation-active');
            }
            selectCodeLines(clickedEl);
            clickedEl.classList.add('code-annotation-active');
          } else {
            // Unselect the line
            unselectCodeLines();
            clickedEl.classList.remove('code-annotation-active');
          }
        });
      }
  const findCites = (el) => {
    const parentEl = el.parentElement;
    if (parentEl) {
      const cites = parentEl.dataset.cites;
      if (cites) {
        return {
          el,
          cites: cites.split(' ')
        };
      } else {
        return findCites(el.parentElement)
      }
    } else {
      return undefined;
    }
  };
  var bibliorefs = window.document.querySelectorAll('a[role="doc-biblioref"]');
  for (var i=0; i<bibliorefs.length; i++) {
    const ref = bibliorefs[i];
    const citeInfo = findCites(ref);
    if (citeInfo) {
      tippyHover(citeInfo.el, function() {
        var popup = window.document.createElement('div');
        citeInfo.cites.forEach(function(cite) {
          var citeDiv = window.document.createElement('div');
          citeDiv.classList.add('hanging-indent');
          citeDiv.classList.add('csl-entry');
          var biblioDiv = window.document.getElementById('ref-' + cite);
          if (biblioDiv) {
            citeDiv.innerHTML = biblioDiv.innerHTML;
          }
          popup.appendChild(citeDiv);
        });
        return popup.innerHTML;
      });
    }
  }
});
</script><nav class="page-navigation"><div class="nav-page nav-page-previous">
      <a href="./data-prepare.html" class="pagination-link" aria-label="数据准备">
        <i class="bi bi-arrow-left-short"></i> <span class="nav-page-text">数据准备</span>
      </a>          
  </div>
  <div class="nav-page nav-page-next">
      <a href="./batch-method.html" class="pagination-link" aria-label="数据的基本处理">
        <span class="nav-page-text"><span class="chapter-number">6</span>&nbsp; <span class="chapter-title">数据的基本处理</span></span> <i class="bi bi-arrow-right-short"></i>
      </a>
  </div>
</nav>
</div> <!-- /content -->



<footer class="footer"><div class="nav-footer"><div class="nav-footer-center"><div class="toc-actions d-sm-block d-md-none"><ul><li><a href="https://github.com/zhujiedong/photosynthesis-analysis/edit/master/data-import.qmd" class="toc-action"><i class="bi bi-github"></i>Edit this page</a></li></ul></div></div></div></footer></body></html>